我正在使用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_namelast_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 %>

10-02 18:32