2012-09-03 3 views
16

私は自分のカスタムビューを作成しているので、関連するモデルを作成するプロセスを自分のユーザーにとって苦労させる必要はありません。私は、モデルを編集するためのコントロールを備えた、すべてのモデルをインラインで表示したいと考えています。これは基本的なフィールドのために自分自身をロールバックするのはかなり簡単ですが、私はむしろform_filtering_select部分的にインラインモデルの関連付けを使用したいと思いますが、これを行うためのドキュメントは見つかりません。カスタムビューでrails_adminフォームを使用しますか?

答えて

0

そこには、あなたが欲しいものをほとんど持っているクールな宝石があります。これはNested Form Fieldsと呼ばれています。 1つのページにレコードを(has_many関連とともに)編集することができます。クールなことは、jQueryを使用してページの再読み込みを行わずにフォームフィールドを動的に追加/削除することさえあるということです。適切な使用方法については、宝石docsをチェックアウトしてください。希望が助けてくれる!

+0

ネストされたフォームフィールドを使用して例を追加すると、賞金が得られます。 – max

1

あなたはNested Form

ライターメソッド=プロジェクトリーダーメソッドからプロジェクトインスタンスの配列を返し、projects_attributesに応答Userクラスを考えてみて使用することができます。projects_attributesは=作家という

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

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

注意を実際にはfields_forがプロジェクトをコレクションとして正しく識別し、フォームのマークアップに設定する正しいインデックスをfields_forに指定する必要があります。

プロジェクトはすでにあなたのためにライターメソッドを定義するために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 %> 

は詳細についてはReferenceを行きます。

+0

この例では、属性ハッシュを処理するための記述例がありますか? – pappy

関連する問題