web-dev-qa-db-ja.com

Rails 4:collection_selectは 'class'属性を挿入していませんか?

ここで何が欠けていますか? Rails 4.0.0で作業していて、新しいBootstrap 3.0.0rc1を試しています。レシピモデルを持つシンプルな「レシピボックス」アプリがありますレシピの「category」フィールドにフィードするCategoryモデル。recipes#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ヘルパーは、クラス属性を備えた適切にフォーマットされたタグをレンダリングします。ただし、selectヘルパーまたはcollection_selectヘルパーをどのように作成しても、クラス属性を含むaを取得するためにRailsを取得できないようです。上記のコードは次のようになります。

<select id="recipe_category" name="recipe[category]"><option value="">Select a category</option>

...

したがって、プロンプトは通過しますが、クラスattribは通過しないため、html_optionsハッシュの一部が認識されているように見えます。ただし、Bootstrapスタイリングは適用されません。クラスの前後に中括弧{}を使用するかどうかは関係ありません: "form-control"かどうか。 collection_selectparamsかどうか。selectヘルパーでも発生します。

誰かアドバイスできますか?あなたもこれを見ていますか?

15
user2670683

使用してみてください:

<%= f.collection_select :category, Category.all, :id, :name, {Prompt: "Select a category"}, {class: "form-control"} %>

Railsのドキュメント によると、最初にオプションがあり、次にhtmlオプションがあります。 htmlオプションは 中括弧 にある必要があることに注意してください:{Prompt: "Select a category"}または{class: "form-control"}

47
Alter Lagos
<%= f.collection_select :category, Category.all, :id, :name, {Prompt: "Select a category"}, {class: "form-control"} %>

チェックされた回答は機能しませんが、正解がコメントに埋め込まれているためチェックされます(Alter Lagosによって提供されます)。コメントから実際の回答を移動することで、混乱を避けようとしています。

10

これを試してみてください、私のために働きます!

<%= collection_select(:category, :category_id, @category_for_advertising, :id, :description, {}, {:class=>"dropdown-menu"}) %>
0
Jemison Santos

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' %>
0
Norm