2011-12-15 48 views
6

所以我使用simple_form來構建我的表單,但這不是一個需求。如何在數組中使用collection_check_boxes?

我想要做的是使用simple_forms collection_check_boxes並傳遞給它一個數組。

我保存我的標籤configatron:

configatron.tags = [{:name => "wheels", :tagtype => "property"}, {:name => "roof", :tagtype => "property"}, {:name => "doors", :tagtype => "property"}] 

這裏是我的標籤型號:

class Tag 
    include Mongoid::Document 
    embedded_in :taggable, polymorphic: true 

    field :name 
    field :tagtype 
end 

這裏是我試過:

<%= f.collection_check_boxes :tags, @tags, @tags.map{|tag| tag.name}, @tags.map{|tag| tag.name} %> 

其中@tags是設置爲configatron.tags in controller

我只是想讓collection_check_boxes工作,然後在before_save上構建標籤並將其嵌入到當前資源中。

我讀過的地方,你可以映射到傳入的集合,並選擇該集合的項目的內容。如果我理解正確,覆蓋value_method? 似乎無法記住你是如何做到這一點的。我還想傳入此資源的當前標記:collection => resource.tags,以便在呈現時檢查這些標記。

有沒有辦法做到這一點?如何操作form_builder來實現這一點,如何實現?我應該採取另一種方法嗎?

旁註:該功能也應該與主幹一起工作,在某些地方骨幹將用於添加標籤。

回答

3

檢查simple-form docs後,我認爲你需要在value_method和label_method作爲符號傳遞給collection_check_boxes

像這樣的:

<%= f.collection_check_boxes :tags, @tags, :name, :name %> 

運作的?

5

如何使用collection_check_boxesArray

FRUITS = [[1, 'Abiu'], [2, 'Açaí'], [3, 'Assai'], [4, 'Acreola']] 

<%= f.collection_check_boxes :fruits, FRUITS, :first, :last %>