Rails undefined方法`map'为nil:NilClass

时间:2012-09-02 00:53:44

标签: ruby-on-rails-3 activerecord

我正在尝试为根据为模型选择的记录(称为“Cancellation_Reasons”)选择的表单创建一个选择字段。

在我的名为取消的模型中:

<%= form_for(@cancellation do |f| %>
    <%= options_from_collection_for_select(@cancellation_reasons, :id, :name) %>
<% end %>

在Cancellation_Controller中:

def new
  @cancellation = Cancellation.new
  @cancellation_reasons = CancellationReason.find(1)    

  respond_to do |format|
    format.html # new.html.erb
    format.json { render json: @trade }
  end
end

当我在Rails控制台中运行CancellationReason.find(1)时,它会找到记录,因此@cancellation_reasons不是nil。我认为这可能就在于我如何使用选择帮助程序(我已经尝试过使用它们,但我不太确定在阅读Rails指南和Rails API docs之后使用哪一个)。

1 个答案:

答案 0 :(得分:0)

options_from_collection_for_select期待一个集合(即使它是1的集合)。 所以将代码更改为:

def new
  @cancellation = Cancellation.new
  @cancellation_reasons = CancellationReason.all

  respond_to do |format|
    format.html # new.html.erb
    format.json { render json: @trade }
  end
end