Rails 选择表单帮助器的文档指出 ( see documentation ):
select(object, method, choices = nil, options = {}, html_options = {}, &block)
这允许添加一个简单的类,如下所示:
<%= f.select :some_attr, MYOPTIONS, {}, {class: 'my-class'} %>
我的问题是,在将它用作 block 时如何向它添加类? Rails 文档指出:
select(report, "campaign_ids") do
available_campaigns.each do |c|
content_tag(:option, c.name, value: c.id, data: { tags: c.tags.to_json })
end
end
当我这样使用它时它不起作用:
<%= f.select :some_attr, {}, {class: 'my-class'} do %>
<% MYOPTIONS.each do |MYOPTION| do %>
<%= content_tag :option, MYOPTION.label, value: MYOPTION.value %>
<% end %>
<% end %>
如果我使用它也不起作用:
f.select :some_attr, class: 'my-class' do
该类未应用于 HTML 中的选择标记。
最佳答案
我解决了我自己的问题,虽然我不完全理解答案,所以如果其他人对此有更好的理解,我很想听听你的答案。
为了让它工作,我只是在开头添加了一个额外的空散列,如下所示:
<%= f.select :some_attr, {}, {}, {class: 'my-class'} do %>
<% MYOPTIONS.each do |MYOPTION| do %>
<%= content_tag :option, MYOPTION.label, value: MYOPTION.value %>
<% end %>
<% end %>
第二个散列仍然是 options
,最后一个仍然是 html_options
,例如,您也可以像这样添加 include_blank
:
f.select :some_attr, {}, {include_blank: true}, {class: 'my-class'}
但是,我不知道第一个散列是什么,也不知道那里可以传递什么值。我查看了 Rails 源代码,但仍然没有头绪。如果您对此有深入的了解,我很想听听。
关于ruby-on-rails - 用作 block 时如何将类添加到 Rails 选择表单助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37095009/