Ruby on Rails: Создание и сохранение постов

Управление 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:

  1. Создайте метод create. Для отладки (не для продакшена) используйте render plain: params.inspect.
  2. Добавьте метод post_params:
def post_params
  params.require(:post).permit(:title, :body)
end
  1. В create: создайте пост с post_params, сохраните его и перенаправьте на страницу просмотра:
@post = Post.new(post_params)
if @post.save
  redirect_to @post
else
  # Обработка ошибок
end

Модель и миграция

Создайте модель и выполните миграцию:

  1. rails generate model Post title:string body:text
  2. rails db:migrate (создаёт таблицу posts с полями title и body).

Отображение поста

В app/views/posts/show.html.erb:

<h1><%= @post.title %></h1>
<p><%= @post.body %></p>

После сохранения, пользователь перенаправляется на /posts/:id, где отображается пост.

Что будем искать? Например,программа