8

私は2つのモデル、会場とエリアを持っています(エリアはIDと名前フィールドで構成されています)。彼らは、1つのエリアには多くの会場があり、各会場はエリアに属しています。関連データベースのRailsドロップダウンを作成する

エリアに会場を割り当てるには現在、新しい会場の作成ページのテキストフィールドにarea_id番号を入力しています。私はその後、会場に属するエリアを表示することができます代わりに、フォーム内の領域のID番号を入力することの

<%= venue.area.name %> 

私はすべてのエリアレコードのエリア名をリストドロップダウンを持っていると思いますし、選択したものが保存時にその会場に関連付けられるようにする。

新しい会場フォーム:私が試してみました

<% form_for @venue do |f| %> 
    <p>name: <br> 
    <%= f.text_field :name %></p> 

    <p>address line 1: <br> 
    <%= f.text_field :addressline1 %></p> 

    <p>address line 2: <br> 
    <%= f.text_field :addressline2 %></p> 

    <p>address line 3: <br> 
    <%= f.text_field :addressline3 %></p> 

    <p>area_id: <br> 
    <%= f.text_field :area_id %></p> 

    <%= submit_tag %> 
<% end %> 

<p>area_id: <br> 
    <%= collection_select(:area, :name, @areas, :id, :name) %> 

しかし、取得する:あなたは がそれを期待していなかったとき

はあなたがnilオブジェクトを持っています!
配列の インスタンスが必要になることがあります。すべてのヘルプははるかに高く評価されて

をnil.map評価中にエラーが
を発生しました!

答えて

29

@areasが定義されていないように見えますが、他にもいくつかの問題があります。試してみてください:

<%= f.collection_select(:area_id, Area.all, :id, :name) %> 
+0

素晴らしいです!迅速な答えをありがとう! – Dave

0

aノーブルは言ったとおりです。 名前で注文する場合は、次の番号を使用してください:

<%= f.collection_select :area_id, Area.order(:name), 
    :id, :name %> 
関連する問題