Rails 4 - ruby 标签可以用在 select 标签内吗?
Rails 4 - can ruby tags be used inside select tag?
我正在尝试编写一个 select 标签,它使用了我编写的帮助程序。
当我这样写标签时,一切正常。
<%= 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' %>
以上尝试无效。我找不到如何在 select 标签内使用助手的示例。可能吗?
如果你想在字符串中解释 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 标签中设置名称属性。
我正在尝试编写一个 select 标签,它使用了我编写的帮助程序。
当我这样写标签时,一切正常。
<%= 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' %>
以上尝试无效。我找不到如何在 select 标签内使用助手的示例。可能吗?
如果你想在字符串中解释 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 标签中设置名称属性。