2010-12-18 49 views
2

我正在使用a有很多通過關聯,因此一篇文章可以'保存'到很多部分,並且該關係稱爲位置。在位置表中還有一個'默認'列(布爾值),這允許用戶指出哪個部分是默認部分。Rails 3 - 帶有a的嵌套表單與複選框有很多關聯

下面是型號:

class Article < ActiveRecord::Base 
    has_many :locations 
    has_many :sections, :through => :locations 

    def default_location 
    self.sections.where('locations.default = 1').first 
    end 
end 

class Location < ActiveRecord::Base 
    belongs_to :article 
    belongs_to :section 
end 

class Section < ActiveRecord::Base 
    has_many :locations 
    has_many :articles, :through => :locations 
end 

所以在我看來:

<%= form_for(@article) do |f| %> 
... 
    <p class="field"> 
    <h3>Locations</h3> 
    <ul> 
     <% @sections.each do |section| %> 
     <li><%= radio_button_tag ???, section.id, :checked => @article.default_location == section %> <%= check_box_tag 'article[section_ids][]', section.id, @article.section_ids.include?(section.id), :id => dom_id(section) %><%= label_tag dom_id(section), section.name %></li> 
     <% end %> 
    </ul> 
    </p> 
... 
<% end %> 

到目前爲止,我可以保存和更新的地點很好,但我不知道如何分配默認領域保存到每個位置。我爲每個部分添加了一個單選按鈕,因此用戶可以選擇默認值,但我不確定如何將它們連接在一起。

任何想法將非常感激!謝謝。

回答

1

不知道爲什麼你需要一個單選按鈕和複選框。嘗試添加一個hidden_​​field_tag以及check_box_tag:

<p class="field"> 
    <h3>Locations</h3> 
    <%= hidden_field_tag "article[section_ids][]", "" %> 
    <ul> 
     <% @sections.each do |section| %> 
     <li> 
      <%= check_box_tag :section_ids, section.id, @article.section_ids.include?(section.id), :id => dom_id(section), :name => 'article[section_ids][]' %> 
      <%= label_tag dom_id(section), section.name %> 
     </li> 
     <% end %> 
    </ul> 
    </p> 
+0

感謝您的回覆。帶有複選框和單選按鈕的想法是每個部分都顯示一個複選框和單選按鈕,允許用戶使用複選框選擇多個部分,並使用單選按鈕將其中一個部分設置爲默認部分。單選按鈕需要共享相同的名稱(組),以便只能選擇一個名稱。 – Mike 2010-12-20 08:18:03

相關問題