Evgenii Legotckoi
Evgenii Legotckoi15 травня 2016 р. 04:30

Ruby on Rails - генерування ресурсів

Після того, як вдалося отримати в попередній статті робочий варіант веб-програми на Ruby, пішов розбиратися далі з розробкою та генеруванням ресурсів, а також з вивченням архітектури веб -додатків Ruby on Rails. Благо цей фреймворк використовує патерн MVC, який також використовується в Qt, тому в цілому з розумінням архітектури проблем виникнути не повинно.

У процесі пошуку джерел інформації в стилі "Ruby для чайників", "Ruby за 21 день"* і т.д. я натрапив, мабуть, на дуже чудовий ресурс , який є перекладом книги Ruby on Rails Tutorial by Michael Hartl. Перше враження від книги виявилося позитивним. Так що подальше самонавчання, мабуть, проводитиму за цим ресурсом.

З перших плюсів, які виявив, так це згадка середовища розробки RubyMine від JetBrains. Я вже знайомий з такими продуктами, як WebStorm, PHPStorm, Intellij IDEA і заснованої на ній Android Studio, тому на даний момент зупинив свій вибір на середовищі розробки. Що дивно Google за запитами Ruby IDE і аналогічним, не показав інформації про це середовище розробки, мабуть, ще не розкрутилися.

Загалом сповнений світ відкриттів чудових для новачка. Ну а тепер приступимо безпосередньо до генерування ресурсів, які працюватимуть на основі MVC патерну.


Генерування ресурсів USER

У вищезгаданій книзі пропонується після створення першого тестового додатку додати в базу даних таблицю із записами користувачів, а в проект нашого нового тестового блогу всі необхідні для роботи з користувачами файли, тобто сторінки для додавання, видалення, перегляду списку користувачів.

Тобто такі файли:

  • db/migrate/20130305221714_create_users.rb
  • app/models/user.rb
  • test/models/user_test.rb
  • тест/прилади/users.yml
  • app/controllers/users_controller.rb
  • додаток/перегляди/користувачі
  • app/views/users/index.html.erb
  • app/views/users/edit.html.erb
  • app/views/users/show.html.erb
  • app/views/users/new.html.erb
  • app/views/users/_form.html.erb
  • test/controllers/users_controller_test.rb
  • app/helpers/users_helper.rb
  • test/helpers/users_helper_test.rb
  • додаток/перегляди/користувачі
  • app/views/users/index.json.jbuilder
  • app/views/users/show.json.jbuilder
  • app/assets/javascripts/users.js.coffee
  • app/assets/stylesheets/users.css.scss
  • app/assets/stylesheets/scaffolds.css.scss

Причому ці файли генеруються автоматично з допомогою команди scaffold, яка формує весь необхідний програмний код. Отже, необхідно до бази даних додати таблицю з такого виду:

  • id - унікальний ідентифікатор рядка, тип даних integer;
  • name – ім'я користувача, тип даних string;
  • Email - його поштова адреса, тип даних string.

Для цього переходимо в директорію блогу з автоматично генерованим змістом у минулій статті (у мене це C: Sites blog) і виконуємо наступну команду:

$ rails generate scaffold User name:string email:string

Як бачите, тут не фігурує ID записів, оскільки він генерується автоматично. Параметр User - відповідає ім'я таблиці, причому у результаті генерується таблиця під назвою users. Також у результаті виконання цього програмного коду буде додано ще пару полів у таблиці. Переконатися в цьому можна зазирнувши в базу даних SQLite, а зробити це можна за допомогою програми SQLiteStudio , до речі, рекомендую як дуже зручний інструмент. Додатковими полями будуть дата створення та дата оновлення.

Але переглянути ці дані в базі даних, таким чином Ви спочатку не зможете. Оскільки шаблон був створений, таблиця не була додана в базу даних. Для цього її необхідно оновити, тобто мігрувати доповнення до бази даних наступною командою:

$ bundle exec rake db:migrate

Зізнаюся, у мене це одразу не спрацювало, оскільки я забув встановити bundle. Виправляємо цю ситуацію командою:

$ gem install bundler

Ну а після міграції, запускаємо сервер:

$ rails server

І намагаємось попрацювати з користувачами. Для цього необхідно перейти за наступними адресами у браузері:

URL Дія Мета
/users
index
сторінка для відображення списку всіх користувачів
/users/1
show
сторінка, що показує користувача з id
1
/users/new
new
сторінка для створення нового користувача
/users/1/edit
edit
сторінка для редагування користувача з id
1

Але в мене ця справа не злетіла, показавши замість очікуваних сторінок сторінку з помилкою.

Справа виявилася в тому, що згенерований код конфліктує з кодом у файлі application.html.erb, який є шаблоном для розміщення інформації про наших користувачів. Після деякого пошуку в мережі, вдалося вирішити проблему зміною параметра application на default

Було:

<!DOCTYPE html>
<html>
<head>
  <title>Blog</title>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <%= csrf_meta_tags %>
</head>
<body>

<%= yield %>

</body>
</html>

Стало:

<!DOCTYPE html>
<html>
<head>
  <title>Blog</title>
  <%= stylesheet_link_tag    'default', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'default', 'data-turbolinks-track' => true %>
  <%= csrf_meta_tags %>
</head>
<body>

<%= yield %>

</body>
</html>

Результат

У результаті вдалося отримати шукані сторінки з додавання користувачів, їх редагування та видалення.

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

Вам це подобається? Поділіться в соціальних мережах!

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up
AD

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:50бали,
  • Рейтинг балів-4
m
  • molni99
  • 26 жовтня 2024 р. 11:37

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:80бали,
  • Рейтинг балів4
m
  • molni99
  • 26 жовтня 2024 р. 11:29

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:20бали,
  • Рейтинг балів-10
Останні коментарі
ИМ
Игорь Максимов22 листопада 2024 р. 22:51
Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii Legotckoi01 листопада 2024 р. 00:37
Django - Урок 064. Як написати розширення для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZE19 жовтня 2024 р. 18:19
Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь Максимов05 жовтня 2024 р. 17:51
Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas505 липня 2024 р. 21:02
QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Тепер обговоріть на форумі
Evgenii Legotckoi
Evgenii Legotckoi25 червня 2024 р. 01:11
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
t
tonypeachey115 листопада 2024 р. 17:04
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
NSProject
NSProject04 червня 2022 р. 13:49
Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
9
9Anonim25 жовтня 2024 р. 19:10
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

Слідкуйте за нами в соціальних мережах