我在Rails中有一个form_for
,它使用collection_check_boxes
方法获取列为复选框的部件数组。我希望复选框的标签是两种方法的组合,以便每个部分的复选框都标有它的名称和它的SKU编号:
我的表单代码:
<%= collection_check_boxes(:service, :part_ids, @parts_list, :id, :sku, {}, {checked: true}) %>
这非常适用于创建复选框列表。但每个标签只是:sku
,因为我只能为标签传递一种方法。有谁知道为这些创建自定义标签的方法?我已经阅读了api文档,它提到了使用do |b| ... end
块,但没有解释如何使用它或为什么。
答案 0 :(得分:9)
以下是修改后的表单代码:
<%= 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 :(得分:3)
您可以在模型中定义自定义字段:
def cb_label
"#{name} #{sku}"
end
并在集合中
<%= collection_check_boxes(:service, :part_ids, @parts_list, :id, :cb_label, {}, {checked: true}) %>