0

私はブックマネージャーのようなものをやっているので、各ユーザーは自分の本のコレクションを持っています。私がやったことはこれです

<%= 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

4

1 に答える 1

0

attr_accessor を追加する場合、attr_accessible リストに追加する必要はないと考えました。今、本の情報を取得しています。

ここでヒントを見つけました

仮想属性と一括割り当て

于 2012-10-03T07:08:20.807 に答える