Ответ 1
у вас есть students_controller
, который соответствует строке resources :students
в вашем routes.rb
. Это создает маршруты, в которых используется слово students
, например students_path
и new_student_path
. При использовании form_for(@record)
, url определяется из класса объектов. В этом случае @record
является User
, поэтому путь users_path
, когда объект является новой записью и user_path(@record)
, когда объект сохраняется. так как у вас нет users_controller
, вам нужно вручную установить URL-адрес form_for
, чтобы исправить эту ошибку
form_for @user, url: student_path(@user), html: { method: :put } do |f|
теперь, если вы используете частичный вызов _form.html.erb
и используете это как для новых, так и для редактирования действий, у вас возникнет проблема, так как URL-адреса для новых и действий редактирования различны. вы должны изменить свои взгляды на что-то вроде этого
# new.html.erb
form_for @user, url: students_path, html: { method: :post } do |f|
render 'form', f: f
# edit.html.erb
form_for @user, url: student_path(@user), html: { method: :put } do |f|
render 'form', f: f
# _form.html.erb
f.text_field :name
f.text_field :title