Вам не хватает вложенных ресурсов - когда вы создаете новый sublet post
, вы хотите, чтобы студент, который его создал, также.
Чтобы добиться этого, вы можете просто добавить еще один вход в форма, но это не очень элегантно - вы только что пришли из представления студенческого шоу.
Это то, для чего нужны вложенные маршруты - идентификатор для студента будет передан в URL, он будет выглядеть следующим образом
.../students/2/sublet_posts/new
Нам нужно это для обоих действий new
и create
.
Теперь в файле маршрутов вы можете использовать его так:
# routes.rb
resources :students do
resources sublet_post, only: [:new, :create]
end
Примечание , что вам нужно только вложить новое действие и создать действие - позже у вас будет идентификатор, сохраненный в экземпляре sublet_post.
Теперь сначала для формы: она должна выглядеть следующим образом:
<%= simple_form_for [ @student, @sublet_post ] do |f| %>
Теперь в вашем контроллере уже определены обе переменные, просто будьте осторожны, вы должны получить ученика примерно так:
@student = Student.find(params[:student_id])
Это будет правильный способ сделать это. Чтобы связать новые сообщения субаренды, не просто добавьте ученика к помощнику пути, но используйте rails routes
в терминале, чтобы найти правильный префикс для помощника пути:
new_student_sublet_post_path(@student)