我正在使用formtastic来为与另一个模型具有HABTM关系的模型对象呈现表单。
我这样做是为了呈现复选框列表:
<%= f.input :classes, :as => :check_boxes, :collection => UserClass.all %>
是的,它呈现所有复选框,并在右侧显示对象名称,类似这样。所以我有这样的事情:
[x] #<UserClass:0x000000087e4958>
我该如何改变?我想显示班级名称和说明...
谢谢。
最佳答案
使用:member_label
选项:
<%= f.input :classes, :as => :check_boxes,
:collection => UserClass.all, :member_label => :name %>
(例如,假设您的UserClass具有
name
属性)。如果标签来自多个字段,则可以传递Proc。例如(如果您的UserClass具有first_name
和last_name
属性):<%= f.input :classes, :as => :check_boxes,
:collection => UserClass.all,
:member_label => Proc.new { |u| "#{u.first_name} #{u.last_name}" } %>
上面是针对Formtastic版本2.x。对于1.2稳定的分支,它的工作原理相同(您可以传入方法名称或proc),但该选项称为
:label_method
。例:<%= f.input :classes, :as => :check_boxes,
:collection => UserClass.all, :label_method => :name %>