has_many スルーのチェックボックスが保存されない理由がわかりません。これはかなり複雑なフォーム (語学サマー プログラムのオンライン申請) であるため、通常の申請者情報に加えて、fields_for を使用して LanguageBackgroundAndInterest モデルの属性を収集しています。これらの属性の一部は、申請者が言語を学ぶために使用した本です。コードは次のようになります。
<%= f.fields_for :language_background_and_interest do |builder| %>
<div class="field">
<%= hidden_field_tag "language_background_and_interest[book_ids][]" %>
<% Book.all.each do |book| %>
<br><%= check_box_tag "language_background_and_interest[book_ids][]", book.id %>
<%= book.name.humanize %>
<% end %>
</div>
<% end %>
language_background_and_interest と books の両方が、次のように has_many_through を使用して結合されます。
class LanguageBackgroundAndInterest < ActiveRecord::Base
attr_accessible :book_ids
has_many :language_background_books
has_many :books, through: :language_background_books
end
class Book < ActiveRecord::Base
attr_accessible :name, :publisher
has_many :language_background_books
has_many :language_background_and_interests, through: :language_background_books
end
# Join Table
class LanguageBackgroundBook < ActiveRecord::Base
attr_accessible :language_background_and_interest_id, :book_id
belongs_to :language_background_and_interest
belongs_to :book
end
チェックボックスの本が適切な背景モデルに割り当てられない理由がわかりません。何か案は?
PS: 確かに、このデザインはかなりあいまいです (本を申請者のものにしないのはなぜですか?) が、私は現在プロトタイプを作成したいと思っており、疑わしい要件にも制約されています。だから私はこれが機能する必要があります。