現在、accepts_nested_attributes_for:studentを使用して、アダルトフォームから複数の学生を作成できます。
しかし、学生フォームを使用して既存の成人を編集するにはどうすればよいですか?(つまり、編集を除いて反対側)
現在、生徒フォームを使用して保護者を増やすことができますが、それは私が望んでいることではありません。
モデル
class Adult < ActiveRecord::Base
has_many :students
accepts_nested_attributes_for :student
end
class Student < ActiveRecord::Base
belongs_to :adult
accepts_nested_attributes_for :adult
end
コントローラ
class StudentsController < ApplicationController
def update
@adult = Adult.find(params[:adult_id])
@student = Student.find(params[:id])
if @student.update_attributes(student_params)
redirect_to path
end
end
private
def student_params
params.require(:student).permit(:adult_id, :school_id, :username, :password,
:firstName, :middleName, :lastName, :alias,
adult_attributes: [:id, :name])
end
end
ビュー
###HOW CAN I UPDATE THE EXISTING PARENT AS OPPOSE TO CREATING ONE
<%= simple_form_for @student.build_adult do |f| %>
<h4>Update Parent Information</h4>
<%= f.label :firstName, 'First Name' %>
<%= f.text_field :firstName, placeholder: "Parent's First Name", :class => "form-control"%>
<%= f.submit "Save & Continue", class: "btn btn-primary"%>
<% end %>
ルート
resources :adult do
resources :student
end
まず、そうですhas_many :students
ので、そうすべきではありaccepts_nested_attributes_for :students
ませんaccepts_nested_attributes_for :student
。
第二に、私があなたの質問を正しく理解した場合、あなたはupdate
既存のものにしようとしてparent(adult) record
いますが、あなたは新しいものを作成することになります。それは問題ですか?その場合:id of the student
、親(成人)レコードを更新する必要がある対象を許可する必要があります。
student_params
このようにメソッドを変更します
def student_params
params.require(:student).permit(:id,:adult_id, :school_id, :username, :password,
:firstName, :middleName, :lastName,:alias,adult_attributes: [:id, :name])
end
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加