nil的未定义方法`foo':NilClass - 在视图中抛出错误但在rails控制台中有效

时间:2014-09-20 18:05:20

标签: ruby-on-rails ruby

以下代码在我尝试加载时不断抛出NoMethodError。它在我重置数据库之前工作得很早:

<% pstate= Place.where(statename: @agency.state) %>
<% fips_place = pstate.where(placeshort: @agency.city) %>
<%= place = 'PLACE:' + fips_place.first.placefp %>

但是当我运行时它在控制台中运行良好:

> pstate = Place.where(statename: "CA")
> fips_place = pstate.where(placeshort: "Los Angeles")
> place = "PLACE: " + fips_place.first.placefp
=> "PLACE: 85292" 

控制器/ agencies_controller.rb:

def set_agency
    @agency = Agency.find(params[:id])
end

模型/ agency.rb:

class Agency < ActiveRecord::Base
    has_one :place
    ...
end

模型/ place.rb:

class Place < ActiveRecord::Base
    belongs_to :agency
end

1 个答案:

答案 0 :(得分:1)

我要走出困境,并猜测地方表格中没有排statenameplaceshort匹配@agency.state@agency.city。< / p>

然后fips_place.first返回nil,而您尝试调用placefp会导致错误。

它适用于控制台,因为您为statenameplaceshort使用了不同的值。