【问题标题】:Rails 4 - can ruby tags be used inside select tag?Rails 4 - 可以在选择标签内使用红宝石标签吗?
【发布时间】:2016-08-13 03:50:44
【问题描述】:

我正在尝试编写一个使用我编写的助手的选择标签。

当我这样写标签时,一切正常。

<%= select_tag "roles", options_from_collection_for_select(@roles, "id", "name"), :multiple => true, :class => 'chosen-select form-control' %>

我想使用一个助手来显示与数据库中的名称不同的角色名称。我做了一个帮手来做这件事。现在我正在尝试使用该辅助方法而不是 :name 属性。

<%= select_tag "roles", options_from_collection_for_select(@roles, "id", "<%= text_for_role(name)%>"), :multiple => true, :class => 'chosen-select form-control' %>

上述尝试不起作用。我找不到如何在选择标签中使用帮助器的示例。有可能吗?

【问题讨论】:

    标签: ruby-on-rails select helper


    【解决方案1】:

    如果你想在一个字符串中解释 ruby​​,你需要使用 #{} 比如

    <%= select_tag "roles", options_from_collection_for_select(@roles, "id", "<%= #{text_for_role(name)}%>"), :multiple => true, :class => 'chosen-select form-control' %>
    

    您也可以直接放置您的 ruby​​ 代码而不是插值:

    <%= select_tag "roles", options_from_collection_for_select(@roles, "id", text_for_role("name")), :multiple => true, :class => 'chosen-select form-control' %>
    

    以上只会解决您遇到的错误,但我认为它最终并没有解决问题。如果您想显示与数据库中的名称不同的名称,我想您需要在角色模型中定义 text_for_role 。 然后你打电话:

    <%= select_tag "roles", options_from_collection_for_select(@roles, :id, :text_for_role), :multiple => true, :class => 'chosen-select form-control' %>
    

    这将为每个AR对象调用角色的方法文本来设置html标签中的名称属性。

    【讨论】:

    • 谢谢 - 我尝试了这两个选项。但它们都不起作用。
    • 第一个错误:语法错误,意外 $undefined ... :multiple => true, :class=> \'chosen-select form-control\'... ...跨度>
    • 第二个错误:#:0x007ff6a9cbc3f0> 的未定义局部变量或方法“名称”
    • 我已经更新了我的答案,你必须引用名字: true, :class=> '选择表单控件' %>
    • 我尝试了更新的表格。错误消息说: nil 不是符号也不是字符串 感谢您在尝试解决此问题时提供的帮助。我不知道这个错误中的 nil 来自哪里
    猜你喜欢
    • 2015-07-07
    • 2011-10-30
    • 2012-03-01
    • 1970-01-01
    • 2012-10-23
    • 2017-12-16
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多