Управление URL-адресами
Для эффективной работы с действиями (создание, обновление, удаление постов) используйте resources :posts в маршрутизации. Это автоматически генерирует URL-адреса для создания (new, create), чтения (show), обновления (edit, update) и удаления (destroy) постов.
Проверьте сгенерированные маршруты командой rails routes в консоли. Результат покажет список URL-адресов, включая /posts, /posts/new, /posts/:id, /posts/:id/edit и другие.
Создание страницы и формы добавления поста
Создайте метод new в PostsController и файл app/views/posts/new.html.erb с HTML-шаблоном формы. Добавьте заголовок <h2>Добавление нового поста</h2>. URL /posts/new отобразит этот шаблон.
Форма создаётся с помощью form_for:
<%= form_for @post do |f| %> <p> <%= f.label :title %> <br> <%= f.text_field :title %> </p> <p> <%= f.label :body %> <br> <%= f.text_area :body %> </p> <p><%= f.submit %></p> <% end %>
Этот код генерирует форму с полями title и body, и кнопкой «Сохранить». form_for генерирует скрытые поля для отправки данных.
Сохранение поста
В PostsController:
- Создайте метод create. Для отладки (не для продакшена) используйте render plain: params.inspect.
- Добавьте метод post_params:
def post_params
params.require(:post).permit(:title, :body)
end
- В create: создайте пост с post_params, сохраните его и перенаправьте на страницу просмотра:
@post = Post.new(post_params)
if @post.save
redirect_to @post
else
# Обработка ошибок
end
Модель и миграция
Создайте модель и выполните миграцию:
- rails generate model Post title:string body:text
- rails db:migrate (создаёт таблицу posts с полями title и body).
Отображение поста
В app/views/posts/show.html.erb:
<h1><%= @post.title %></h1> <p><%= @post.body %></p>
После сохранения, пользователь перенаправляется на /posts/:id, где отображается пост.