如何在Ruby on Rails中为select_tag添加一个类

8

在这里添加类标签有困难:

 <div class="field">
    <%= label_tag(:school_or_org, "Are you a school or a non-profit organization?") %> 
    <%= select_tag(:school_or_org, options_for_select([ ['school', "school"], ['non-profit', "non-profit"] ]))  %> 
  </div>

以下是我尝试过的方法:

      <div class="field">
         <%= label_tag(:school_or_org, "Are you a school or a non-profit organization?") %> 
         <%= select_tag(:school_or_org, options_for_select([ ['school', "school"], ['non-profit', "non-profit"], {:class => 'form-control'} ]))  %> 
     </div> 

当我通过firebug检查时,我没有看到类信息,所以显然它没有被添加。

我该如何添加它才能在表单中显示出来?

谢谢。

编辑一

你是指像这样吗:

 <%= select_tag(:school_or_org, options_for_select([ ['school', "school"], ['non-profit', "non-profit"]] ), {:class => 'form-control'})  %> 

它没有起作用。

仅供参考,这就是我想让选择框看起来像的地方:http://getbootstrap.com/css/#forms(查看选择部分)。那是我从中获取 "form-control" 的地方。


你想将这个类添加到选择框还是选择选项? - patrickmcgraw
@patrickmcgraw,我认为现在应该选择下拉框。 - user273072545345
2个回答

28
如果您正在使用 select 助手,您需要一个空的选项哈希,然后跟着您的 HTML 选项,如下所示:
select(object, method, choices, options = {}, html_options = {})

使用您的示例,这将如下所示:

<%= select(:school_or_org, options_for_select([ ['school', "school"], ['non-profit', "non-profit"]] ), {}, {:class => 'form-control'})  %>

如果您正在使用select_tag助手,则可以将哈希添加到末尾作为选项哈希的一部分:

 select_tag(name, option_tags = nil, options = {})

这能起作用是因为任何未被识别的选项都会作为标准 HTML 属性传递。

对于您的示例,它应该如下所示:

<%= select_tag(:school_or_org, options_for_select([ ['school', "school"], ['non-profit', "non-profit"]] ), {:class => 'form-control'})  %> 

当我复制您的答案时,得到的是“错误的参数数量(4个参数需要3个)”......而且我没有修改任何其他内容。为什么会出现这种错误? - user273072545345
非常抱歉,我之前想的是select助手,而不是select_tag助手。我已经修改了我的答案,并解释了两者之间的区别(附带参考资料)。现在这两个都应该可以使用了。 - benjaminjosephw

2
如果你想将类应用于选择框本身,则这里出现了括号嵌套错误。 {:class => 'form-control'} 片段需要位于 options_for_select 调用的括号之外。
如果你想将类应用于选项,则每个数组元素都需要像这样具有类声明: ['non-profit',“non-profit”,{:class => 'form-control'}]

我已经更新了我的帖子,说明了我是如何做的。但它仍然没有起作用。我做错了什么? - user273072545345

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接