Ruby on Rails:更改formtastic中的复选框标签

Hom*_*ith 4 checkbox ruby-on-rails has-and-belongs-to-many formtastic

我使用formtastic为与另一个模型具有HABTM关系的模型的对象渲染表单.

我这样做是为了呈现一个复选框列表:

<%= f.input :classes, :as => :check_boxes, :collection => UserClass.all %>
Run Code Online (Sandbox Code Playgroud)

是的,它呈现所有复选框,在右侧显示对象名称,如下所示.所以我有这样的事情:

[x] #<UserClass:0x000000087e4958>
Run Code Online (Sandbox Code Playgroud)

我怎么能改变呢?我想显示班级名称和描述......

谢谢.

Ben*_*Lee 13

使用:member_label选项:

<%= f.input :classes, :as => :check_boxes,
    :collection => UserClass.all, :member_label => :name %>
Run Code Online (Sandbox Code Playgroud)

(假设您的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}" } %>
Run Code Online (Sandbox Code Playgroud)

以上是Formtastic版本2.x. 对于1.2-stable分支,它的工作方式相同(您可以传入方法名称或proc),但调用该选项:label_method.例:

<%= f.input :classes, :as => :check_boxes,
    :collection => UserClass.all, :label_method => :name %>
Run Code Online (Sandbox Code Playgroud)