私は2つのオブジェクトの成分と起源を持っています。
各材料には起源があるので、私がorigin_idを持っている材料には
、ビューが表示されます
<p>
<b>Name:</b>
<%= @ingredient.name %>
</p>
<p>
<b>Origin:</b>
<%= @ingredient.origin_id %>
</p>
クラス成分は次のように宣言されています
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
何を修正すればよいですか?
編集を追加:
def edit @ingredient = Ingredient.find(params [:id])@origins = Origin.all end