有一种方法可以从一个常量序列化collection_check_boxes吗? 像这样:
# model
class tutorial < ActiveRecord::Base
serialize :option
TYPES = ["Option 1", "Option 2", "Option 3"]
end
# view
<%= form_for(@tutorial) do |b| %>
<%= f.collection_check_boxes(:option, Tutorial::TYPES, :id, :name) do |b| %>
<%= b.label class:"label-checkbox" do%>
<%=b.check_box + b.text%>
<%end%>
<% end %>
<% end %>
或者只是:
<%= f.collection_check_boxes :option, Tutorial::TYPES, :id, :name %>
当我尝试两者时,我收到错误:
undefined method `id' for "Option\t1":String
我的许可参数已经设置为option: []
之前有人这样做了吗?
谢谢!
答案 0 :(得分:1)
定义是:
collection_check_boxes(method, collection, value_method, text_method, options = {}, html_options = {}, &block)`
第一个是发送方法,第二个是集合,第三个是调用设置选项值property
的方法,第四个是调用获取文本的方法并将其作为选项的标签。
<%= f.collection_check_boxes :option, Tutorial::TYPES, :id, :name %>
您正在使用Tutorial::TYPES
(如果是字符串的数组)作为集合,并在每个字符串上调用id
和name
方法。
您的收藏品应该是Tutorial.all
,要获得标签,您应该在Tutorial
对象上实现一个方法,例如:
enum type: [
:type1,
:type2,
:type3,
]
并像这样使用它:
<%= f.collection_check_boxes :option, Tutorial.all, :id, :type %>