2014-02-22 47 views
3

我在Rails中有一個form_for,它使用collection_check_boxes方法獲取列爲複選框的部分數組。我想複選框的標籤是兩種方法的複合,使各部分的複選框標有它的名字和它的SKU編號:Rails中的多個列名/自定義標籤collection_check_boxes

我的表單代碼:

<%= collection_check_boxes(:service, :part_ids, @parts_list, :id, :sku, {}, {checked: true}) %> 

這個完美的作品來創建複選框列表。但每個標籤只有:sku,因爲我只能通過它的一種方法標籤。有誰知道一種方法來爲這些創建自定義標籤?我已閱讀api文檔,並提及使用do |b| ... end塊,但沒有解釋如何使用它或爲什麼。

回答

7

下面是修改表單代碼:

<%= collection_check_boxes(:service, :part_ids, @parts_list, :id, :sku, {}, {checked: true}) do |b| 
    b.label { b.check_box + b.object.name + " " + b.object.sku} 
end %> 

注: b.object.name ####假定name是字段名在模型 b.object.sku ####與b.object.sku.to_s如果sku是數字替換領域。

1

你可以在你的模型中定義的自定義字段:

def cb_label 
    "#{name} #{sku}" 
end 

,並在收集

<%= collection_check_boxes(:service, :part_ids, @parts_list, :id, :cb_label, {}, {checked: true}) %> 
+0

基爾提的答案是正確的我的問題,雖然之前我得到了一個答案,我認爲嘗試上面的別名方法,它也工作得很好。如果我在很多不同的地方打電話給名字/ sku組合,我會用你的答案,因爲它更容易。因此,投票。 – Beartech

+0

很高興能幫上忙。感謝您的投票。 –

相關問題