我在这里缺少什么?我正在使用Rails 4.0.0并尝试新的Bootstrap 3.0.0rc1。我有一个简单的“食谱盒”应用程序,它有一个食谱模型和一个分类模型,可以在食谱上提供“类别”字段。在食谱#new视图中,我定义了以下字段:
<h1>Create New Recipe</h1>
<%= form_for @recipe, html: { class: 'form-horizontal' } do |f| %>
<fieldset>
<legend>Main Information</legend>
<div class="form-group">
<%= f.label :name, "Recipe name", class: "col-lg-2 control-label" %>
<div class="col-lg-6">
<%= f.text_field :name, class: "form-control" %>
</div>
</div>
<div class="form-group">
<%= f.label :category_id, class: "col-lg-2 control-label" %>
<div class="col-lg-6">
<%= f.collection_select :category, Category.all, :id, :name, class: "form-control", prompt: "Select a category" %>
</div>
</div>
...
text_field帮助器呈现格式正确的标记,并带有class属性。但是,无论我如何构造select或collection_select助手,我似乎无法让Rails给我一个包含class属性的东西。上面的代码给了我这个:
<select id="recipe_category" name="recipe[category]"><option value="">Select a category</option>
...
所以提示通过,但类attrib没有,所以它看起来像html_options哈希的一部分被识别。但是没有应用Bootstrap样式。如果我在类中使用大括号{}无关紧要:“form-control”与否。如果我在collection_select params周围使用parens,无关紧要。也可以选择帮助器。
任何人都可以提供建议吗?你也看到了吗?
答案 0 :(得分:47)
尝试使用:
<%= f.collection_select :category, Category.all, :id, :name, {prompt: "Select a category"}, {class: "form-control"} %>
根据rails documentation,首先是选项,然后是html选项。请注意,html选项必须位于braces:{prompt: "Select a category"}
或{class: "form-control"}
。
答案 1 :(得分:10)
<%= f.collection_select :category, Category.all, :id, :name, {prompt: "Select a category"}, {class: "form-control"} %>
选中的答案不起作用,但是经过检查,因为评论中隐藏了正确的答案(由Alter Lagos提供)。我试图通过从评论中移出实际答案来避免混淆。
答案 2 :(得分:0)
试试这个,对我有用!
<%= collection_select(:category, :category_id, @category_for_advertising, :id, :description, {}, {:class=>"dropdown-menu"}) %>
答案 3 :(得分:0)
已经回答的另一个版本,包含W3CSS:
<%= family_form.collection_select :billing_status_id,
> BillingStatus.by_tenant(@cutid).order(:description), :id,
> :description, {}, {class: 'w3-select'} %>
<%= family_form.label
> :billing_status, class: 'w3-label' %>