0

我有两个对象成分和来源。
每种成分都有一个来源,所以在我有 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

4

1 回答 1

1

我在这里看不到 @origins 的声明位置。似乎您的 @origins 只是 nil 而不是集合。

于 2012-04-28T17:23:49.227 回答