16

関連するモデルを作成するプロセスをユーザーの負担を軽減するために必要な独自のカスタムビューを作成しています。ピースに関連付けられているすべてのモデルを、それらを編集するためのコントロールとともにインラインで表示したいと思います。これは、基本的なフィールドに自分でロールするのは非常に簡単ですがform_filtering_select、インラインモデルの関連付けにパーシャルを使用したいのですが、これを行うためのドキュメントが見つかりません。

4

2 に答える 2

1

ネストされたフォームを使用できます

プロジェクト リーダー メソッドから Project インスタンスの配列を返し、projects_attributes= ライター メソッドに応答する User クラスを考えてみます。

class User
  def projects
    [@project1, @project2]
  end

  def projects_attributes=(attributes)
    # Process the attributes hash
  end
end

fields_for が :projects をコレクションとして正しく識別し、正しいインデックスをフォーム マークアップに設定するには、projects_attributes= writer メソッドが実際に必要であることに注意してください。

プロジェクトがすでに User の関連付けになっている場合は、accepts_nested_attributes_for を使用してライター メソッドを定義できます。

class User < ActiveRecord::Base
  has_many :projects
  accepts_nested_attributes_for :projects
end

このモデルは、ネストされた fields_for で使用できるようになりました。ネストされた fields_for 呼び出しに指定されたブロックは、コレクション内のインスタンスごとに繰り返されます。

<%= nested_form_for @user do |user_form| %>
  ...
  <%= user_form.fields_for :projects do |project_fields| %>
    <% if project_fields.object.active? %>
      Name: <%= project_fields.text_field :name %>
    <% end %>
  <% end %>
  ...
<% end %>

詳細については、リファレンスを参照してください。

于 2015-05-05T07:23:47.477 に答える