0

別の簡単な質問ですが、前もって申し訳ありませんが、私がやろうとしていることの解決策が見つからないようです。

vehicle_size が設定されているレコードのデータベースに現在あるすべての既存のオプションを入力したい選択フィールド (vehicle_size) を含むフォームがあります。また、選択したオプションを、データベースのオプションが現在設定されているものに設定したい (設定されている場合) が、私が抱えている問題は、この値がまだ設定されていないという理由だと思います。

私は現在、このコードを持っています:

<%= f.select(:vehicle_size, @models.index_by {|m| m.vehicle_size}, :selected => :vehicle_size) %>

これは選択オプションを正しく入力していますが、私の新しいページと編集ページ (両方ともこのフォームを使用) では、現在すべてのレコードが既存のオプションのいずれかに設定されていても、選択メニューは空白です (vehicle_size は実際には将来的に一部のレコードで空白になる可能性があります)。 )。

次に、メニューからオプションを選択してレコードを保存すると、 vehicle_size オプションに奇妙な値が含まれます。次の行に沿った何か:

#<Model:0x007fd13e6c3790>

私は間違った方法で index_by を使用していると確信しているので、私が欠けているものについてのいくつかのポインタは素晴らしいでしょう.

4

1 に答える 1

0

のパラメータはf.selectattribute_nameoption_tagsoptionsです。
option_tagshtmlオプションタグの文字列であると想定されています。値の配列、
コレクションなどからそのような文字列を構築するヘルパーがいくつかあります。options_for_selectoptions_from_selection_for_select

これらのヘルパーのいずれかを使用する必要があります。

次のコマンドで既存のvehicle_sizees を取得できます。

Model.pluck(:vehicle_size).uniq

あなたの選択は次のようになります:

<%= f.select :vehicle_size, options_for_select(Model.pluck(:vehicle_size).uniq,@model.vehicle_size) %>

フォーム ヘルパーについては、 Rails ガイドを参照してください。

于 2013-07-24T14:37:22.140 に答える