【问题标题】:Ruby on Rails: Change checkbox label in formtasticRuby on Rails:更改表单中的复选框标签
【发布时间】:2012-03-25 23:41:16
【问题描述】:

我正在使用 formtastic 为与另一个模型具有 HABTM 关系的模型对象呈现表单。

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

<%= f.input :classes, :as => :check_boxes, :collection => UserClass.all %>

是的,它会呈现所有复选框,并在右侧显示对象名称,类似于这样。所以我有这样的事情:

[x] #<UserClass:0x000000087e4958>

我该如何改变呢?我想显示类名和描述...

谢谢。

【问题讨论】:

    标签: ruby-on-rails checkbox has-and-belongs-to-many formtastic


    【解决方案1】:

    使用: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-stable 分支,它的工作方式相同(您可以传入方法名称或过程),但该选项称为 :label_method。示例:

    <%= f.input :classes, :as => :check_boxes,
        :collection => UserClass.all, :label_method => :name %>
    

    【讨论】:

    • 感谢您的快速回答。我已经尝试过了,还有 :value_method,但我仍然看到 #<0x000000087e4958>
    【解决方案2】:

    T从标签中移除渲染。 使用

    感谢@HommerSmith 澄清了旧版本中的使用以及上述示例的使用位置。

    【讨论】:

    • @HommerSmith,Galuga 是对的。在 1.2 版中,您省略了 =,渲染是内置的。但也请参阅我的回答,了解如何在 1.2 中执行您想要的操作。
    • @HommerSmith,嗯...我以为它会自动渲染,但如果不是,我想继续使用&lt;%= ;)
    • @HommerSmith,其实没关系。你从一开始就是对的,你确实需要&lt;%=,你只在form.inputs中省略它,而不是form.input。但请注意,此 与较新版本不同,您使用 &lt;%= 甚至 form.inputs
    • @Ben Lee 好的。感谢您的时间和准确的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    相关资源
    最近更新 更多