【问题标题】:How do you add a css class (Bootstrap) to a select field with a loop inside in Rails?如何在 Rails 中将 css 类(Bootstrap)添加到带有循环的选择字段?
【发布时间】:2015-08-25 20:03:48
【问题描述】:

我有以下选择字段:

<%= f.select(:avaliador_id) do %>
  <% @usuarios_array.each do |u| %>
    <%= content_tag(:option, u.first, value: u.last) %>
  <% end %>
<% end %>

如何在选择菜单中添加一个 css 类(Bootstrap 的表单控件)?

提前致谢。

附: this question 的答案显示了如何在没有每个循环的情况下执行此操作。但在我的情况下,有一个循环,我无法让 css 类工作。

【问题讨论】:

  • 为什么需要循环?为什么不直接使用&lt;%= f.select(:avaliador_id, options_for_select(@usuarios_array)), {}, {class: "form-control"}) %&gt;
  • @mmichael 你是对的。我真的不需要它。我不敢相信我以前没有这样想。谢谢!

标签: html css ruby-on-rails twitter-bootstrap loops


【解决方案1】:

查看文档:http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-select 方法如下: 选择(对象,方法,选择 = nil,选项 = {},html_options = {},&block) 由于您正在传递一个块并且 object 参数是 f 变量,因此以下应该可以工作:

<%= f.select(:avaliador_id, {}, {class: "form-control"}) do %>
  <% @usuarios_array.each do |u| %>
    <%= content_tag(:option, u.first, value: u.last) %>
  <% end %>
<% end %>

但是,我不确定这是否会解释选择参数,所以它可能是:

<%= f.select(:avaliador_id, nil, {}, {class: "form-control"}) do %>
  <% @usuarios_array.each do |u| %>
    <%= content_tag(:option, u.first, value: u.last) %>
  <% end %>
<% end %>

【讨论】:

  • 我认为&lt;%= f.select(:avaliador_id, nil, {}, {class: "form-control"}) do %&gt; 会起作用
  • @Eric N 第二个对我有用,谢谢。但正如 mmichael 所说,我一开始就不需要循环。
【解决方案2】:

不要使用循环,而是使用:

<%= f.select(:avaliador_id, options_for_select(@usuarios_array)), {}, {class: "form-control"}) %>

【讨论】:

    猜你喜欢
    • 2016-10-01
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    相关资源
    最近更新 更多