ネストされたモデルフォームとupdate_attributes
-
27-09-2019 - |
質問
クラスプロジェクトとクラスチームメンバーの間に1対多数の関係を持つネストモデルの形があり、コントローラーには次のような更新機能があります。
@project = Project.find(params[:id])
@project.update_attributes(params[:project])
さて、節約が行われる前に、チームメンバーの一部のためにフォームに設定されていないフィールドを設定したいと思います。そのようにupdate_attributes関数を使用することはできません。
それを行うための最良の方法は何でしょうか?
ありがとう、ニコラス。
解決
を調べます accepts_nested_attributes_for
働き。あなたは次のようなものを持っているかもしれません:
class Project < ActiveRecord::Base
has_one :team
accepts_nested_attributes_for :team
# also this will be useful
validates_associated :team
end
あなたのフォームでは、あなたは使用したいと思うでしょう fields_for
属性をネストする方法。それは次のように見えるかもしれません:
<% form_for(@project) do |p| %>
<%= p.error_messages %>
<!-- Project name -->
<%= p.text_field :name %>
<% f.fields_for(@project.team) do |t| %>
<!-- Team Name -->
<%= t.text_field :name %>
<% end %>
<%= f.submit 'Create Project' %>
<% end %>
フォームを送信すると、電話をかけることができます @project.update_attributes(params[:project])
そしてそれは機能します。あなたもすることができます raise params.inspect
パラメーションがどのようにネストされているかを確認します。
お役に立てれば。
所属していません StackOverflow