Ruby on rails错误未定义方法`map'为nil:NilClass

时间:2013-08-12 11:20:34

标签: ruby-on-rails

以下是我的文件/home/divya/climb/project1/app/views/cities/new.html.erb中的代码摘录,其中第5行引发了此错误:

  

nil的未定义方法`map':NilClass

提取的来源(第5行):

2: <%= form_for(@city) do |f| %>
3: <%= f.label :country_id %><br />
4: 
5: <%= collection_select(:city, :country_id, @countries, :id, :country_name, {:prompt => false}) %>
6: <%= render 'form' %>
7: 
8: <%= link_to 'Back', cities_path %>

Rails.root: /home/divya/climb/project

3 个答案:

答案 0 :(得分:7)

显然,您没有在控制器中设置@countries实例变量,因此它是nilmap内部@countries调用ActionView方法(严格按照options_from_collection_for_select方法)。

您应该在控制器中设置@countries,并使用:

@countries = Country.all

或直接在视图中调用:

<%= collection_select(:city, :country_id, Country.all, :id, :country_name, { :prompt => false }) %>

答案 1 :(得分:2)

更改

<%= collection_select(:city, :country_id, @countries, :id, :country_name, {:prompt => false}) %>

<%= collection_select(:city, :country_id, Country.all, :id, :country_name, {:prompt => false}) %>

答案 2 :(得分:0)

仅在控制器中更改此变量,使用全局变量$ countries = Country.all,并且您的视图使用此变量。