質問

クラスプロジェクトとクラスチームメンバーの間に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 パラメーションがどのようにネストされているかを確認します。

お役に立てれば。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top