10

グーグルでこの検索の結果は非常に多く、SOでも尋ねられますが、これまでに説明した解決策は役に立ちません。問題は次のとおりです。私はaを持っており、forform_for @company |f|を使用していますが、フォームが読み込まれるときに、実際の会社のステータスが設定されている場合はそれを選択する必要があります。デバッガーを介して、それが設定されていることを知っていますが、デフォルト値が表示されています。コードは次のとおりです。f.collection_selectcompany_status_id

= puts @company.company_status_id
= f.collection_select :company_status_id, ListCache.company_statuses, :id, :name, {:prompt => @select_value}

生成されたhtmnlは次のとおりです

<select id="company_company_status_id" prompt="-Select-" name="company[company_status_id]">
<option value="1">-Not Available-</option>
<option value="2">Active</option>
<option value="3">Bankrupt</option>
<option value="4">Acquired</option>
</select>

そして、私がそうしても条件は同じままです:

f.collection_select :company_status_id, ListCache.company_statuses, :id, :name, {:prompt => @select_value, :selected => :selected => @company.company_status}

または

f.collection_select :company_status_id, ListCache.company_statuses, :id, :name, {:prompt => @select_value, :selected => @company.company_status}
4

5 に答える 5

20

これは私が最終的にしたことです:

f.collection_select :company_status_id, ListCache.company_statuses, :id, :name, {:prompt => @select_value, :selected => @company.company_status_id.to_i}

渡されたものとコレクションの属性を比較することにより、collection_selectが選択された値を自動的に選択するという、同様の質問に対する回答を読みました。どうやらそれらのタイプの違いがあり、CompanyStatusからのintを@company.company_status_id.to_iのintと比較するとうまくいきました。@company.company_status_idもintであると想定されていますが。私はそれをデータベースで見ることができます。とにかく、このコード行は機能しました。

誰かが説明できれば、私はとても感謝します!

于 2012-04-20T04:49:42.747 に答える
6

collection_selectヘルパーを使用する場合、構文は非常に単純です。

<%= f.collection_select :category_id, Category.all, :id, :name,
                       prompt: true, selected: @product.category_id %>

この助けを願っています

于 2017-02-11T13:57:08.253 に答える
2
<% form_for(@company) do |f| %>
   <%= f.select(:company_status_id, ListCache.all.map {|lc| [lc.name, lc.id]} ) %>
<% end %>
于 2012-04-19T13:24:18.563 に答える
1

ブラウザのアドレスバーに移動してEnterキーを押す必要がある場合もあります。更新ボタンをクリックしてページを通常のリロードしても効果はありません。私の問題はそのように解決されました。

于 2018-07-31T04:18:25.780 に答える
0

代わりにselect_tagを使用してください

    <%= form_for(@product, :html => {:multipart => true}) do |f| %>


     <%= select_tag("product[category_id]", options_for_select(@categories.map { |cat| [cat.name, cat.id] })) %>

     <%end%>

これがお役に立てば幸いです。

于 2012-04-19T10:48:27.307 に答える