2

データベースからデータを取得する選択ボックスを作成しようとしています。これを設定するのに問題があります。私はこのコードを試しました:

<%= f.fields_for :unit do |u| %>
  <%= u.label :name %>
  <%= u.select :name, :class => "ingredient_unit", :prompt => "Please Select" %>
<% end %>

しかし、選択肢の一部が欠けています。データベースからそれらを引き出す方法がわかりません。機能するcollection_selectを使用してみましたが、クラスオプションが機能しませんでした... collection_selectは次のようになりました:

<%= u.collection_select :unit, Unit.all, :id, :name, :class => "ingredient_unit", :prompt => "Please Select" %>

また、最初の記号 (:unit) の意味がわかりません。html の ID と名前を設定しているようです。

4

3 に答える 3

3

collection_selectおよびselectのドキュメントを参照してください。しかし、あなたの質問に答えるために、選択部分について、選択するオプションのリストを渡すのを忘れていました。また、ヘルパーのオプションであり、html オプションであるためprompt、の順序を入れ替える必要があります。classpromptclass

<%= u.select :unit_id, Unit.all.map { |u| [u.name, u.id] }, { :prompt => "Please Select" }, { :class => "ingredient_unit" } %>

コレクションの選択

<%= u.collection_select :unit_id, Unit.all, :id, :name, { :prompt => "Please Select" }, { :class => "ingredient_unit" } %>

両方のヘルパーに渡される最初のパラメーターは、選択した回答を保存する列名です。上記の 2 つのコードは、同じ選択タグを生成する 2 つの異なる方法を示しています。

于 2013-03-29T14:57:31.173 に答える
2

最初の記号は、ユーザーの選択から返された ID を入力するフィールドを示します。

また、クラス セクションを {} でラップする必要があります

于 2013-03-29T14:50:16.803 に答える
2

:unitselect要素に使用しているモデル属性を指します。はい、要素の名前/ID を設定します (名前は params ハッシュにとって最も重要です)。

collection_select でクラスを設定するには、そのヘルパーが html_option として受け取るので、ハッシュとして指定します。

<%= u.collection_select :unit, Unit.all, :id, :name, { :prompt => "Please Select" }, { :class => "ingredient_unit" } %>
于 2013-03-29T14:51:30.723 に答える