2012-04-28 3 views
0

私は2つのオブジェクトの成分&起源を持っています。成分I中
ビューディスプレイruby​​ - コンボボックスを埋める

<p> 
    <b>Name:</b> 
    <%= @ingredient.name %> 
</p> 

<p> 
    <b>Origin:</b> 
    <%= @ingredient.origin_id %> 
</p> 

をorigin_idたクラス成分が宣言されているように

class Ingredient < ActiveRecord::Base 
    has_and_belongs_to_many :recipes 
    belongs_to :origin 

    attr_accessible :name, :origin_id 
end 

クラス原点

class Origin < ActiveRecord::Base 
    attr_accessible :name 
end 

を次のように
各成分は、原点を有します編集フォーム私は書くと動作します

<% originsArray = Origin.all.map { |origin| [origin.name, origin.id] } %> 
    <div class="field"> 
    <%= f.label :origin_id %><br/> 
    <%= f.select(:origin_id, originsArray) %><br/> 
</div> 

が、私は私が手

<%= collection_select(:origin, :id, @origins, :id, :name, options ={:prompt => "-Select a payment"}, :class =>"origin") %> 

(すべてのチュートリアルのように)の代わりに書く場合

undefined method `map' for nil:NilClass 

私が何を修正する必要がありますか?

編集 が追加さ:

デフ編集 @ingredient = Ingredient.find(のparams [:ID]) @origins = Origin.all エンド

+0

「編集フォームに書いて動作する」 - 壊れていない場合は修正しないでください。 –

+0

私は知っています。他の形で私はそれを変更したい。それは努力するものよりも働くものを試して変更することを開始する方が良いです。簡単にデバッグできます。 – Jeb

答えて

1

を私はどこ@originsここに表示されません宣言されています。あなたの@originsはコレクションではなく、無限であるようです。

+0

ブルズアイ。編集を見てください – Jeb

関連する問題