通过不保存has_many的多个复选框

时间:2012-12-25 20:41:11

标签: ruby-on-rails ruby-on-rails-3

我不确定为什么我的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 %>

使用has_many_through将language_background_and_interest和books连接在一起,如下所示:

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:当然,这个设计很模糊(为什么不让书籍属于申请人?),但我现在想要制作一个原型,我也受到一个可疑要求的限制。所以我需要这个工作。

1 个答案:

答案 0 :(得分:0)

我最终审查了我的模型设计并简化了它。我还切换到简单表单以便轻松处理复杂的表单。