私はブックマネージャーのようなものをやっているので、各ユーザーは自分の本のコレクションを持っています。私がやったことはこれです
<%= simple_form_for @user_collection do |f|%>
<%= f.input :user%>
<%= f.input :collection_name%>
<%= f.simple_fields_for :collection_books do |builder|%>
<%= builder.input :book_name%>
<div class="author"><%= builder.input :author%></div>
<div class="year"><%= builder.input :year%></div>
<%end%>
<%end%>
書籍をユーザーに関連付けるために、そのビューを使用します。
ここで book_name の入力は、本の名前を検索するオートコンプリート フィールド [1] です。本をクリックすると、著者と出版年の入力に、検索から取得した情報が入力されます。
また、本を追加するためにリンク [2] を使用しています。ここに示すコードには、他のフィールドは表示されません。コレクション モデルの例として、次の検証行があります。
validates_presence_of :collection_name
そのコレクションを collection_name なしで保存しようとすると、期待どおりにそのビューが再びレンダリングされますが、保存したいからではなく、ブック情報を表示するためにアクセサー属性を使用しているため、問題が発生します。
Collection.rb
attr_accessible :collection_books_attributes ... (and others)
has_many :collection_books
has_many :books, :through => :collection_books
accepts_nested_attributes_for :collection_books
CollectionBook.rb
attr_accessible :book_name
attr_accessor :author, :year
大量割り当てエラーなしで、この値を params だけに保存する方法はありますか? 保存しようとするたびに、エラーが発生した場合に本の著者と出版年を表示するために作成したアクセサーが含まれているためです (前述のとおり)。
私の問題が十分に明確であることを願っています:)
前もって感謝します
ハビエル
[1] http://railscasts.com/episodes/102-auto-complete-association-revised [2] http://railscasts.com/episodes/196-nested-model-form-revised