ruby填充组合框

ruby填充组合框,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我有两个对象:成分和来源。 每个成分都有一个来源,因此在成分中我有来源\u id 视图将显示 <p> <b>Name:</b> <%= @ingredient.name %> </p> <p> <b>Origin:</b> <%= @ingredient.origin_id %> </p> 我该修什么 编辑 增加: 定义编辑 @配料=配料.查找(参数[:id

我有两个对象:成分和来源。
每个成分都有一个来源,因此在成分中我有来源\u id
视图将显示

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

<p>
  <b>Origin:</b>
  <%= @ingredient.origin_id %>
</p>
我该修什么

编辑 增加:

定义编辑 @配料=配料.查找(参数[:id]) @origins=Origin.all
结束

我看不出@origins在哪里声明。看起来你的@origins只是零,而不是集合。

“在我编写的编辑表单中,它可以工作”-如果它没有损坏,就不要修复它。我知道。但在其他方面,我想改变它。最好是开始尝试改变一些有效的东西,而不是不起作用的东西。更容易调试。
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