Rails collection_check_boxes中的多个列名/自定义标签

时间:2014-02-22 21:08:55

标签: ruby-on-rails ruby-on-rails-4

我在Rails中有一个form_for,它使用collection_check_boxes方法获取列为复选框的部件数组。我希望复选框的标签是两种方法的组合,以便每个部分的复选框都标有它的名称和它的SKU编号:

我的表单代码:

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

这非常适用于创建复选框列表。但每个标签只是:sku,因为我只能为标签传递一种方法。有谁知道为这些创建自定义标签的方法?我已经阅读了api文档,它提到了使用do |b| ... end块,但没有解释如何使用它或为什么。

2 个答案:

答案 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}) %>