2014-09-20 31 views
0

下面的代码在我尝试加载时会一直抛出一个NoMethodError。未定义的方法`foo'为零:NilClass - 引发错误,但在rails控制台中工作

<% 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 
+0

你的问题是什么? – sawa 2014-09-20 18:09:08

+0

我收到错误!我不知道为什么。 – 2014-09-20 18:09:51

+0

代码中\ @ agency.state和\ @ agency.city的值是什么? – Lexsys 2014-09-20 18:10:10

回答

1

我要出去肢体和猜测,有在地方台,其statenameplaceshort匹配@agency.state@agency.city没有行。

那么fips_place.first返回零,你试图拨打placefp会导致错误。

它在控制台中工作,因为您对statenameplaceshort使用了不同的值。

+0

Aha!答对了。这不起作用,因为我试图在浏览器(本例中为AK)的'@ agency'调用'placeshort'的值是'Anchorage Municipality'而不是'Anchorage'。 (在我重置我的数据库之前它正在工作,因为我之前抓住它并修复它。)谢谢! – 2014-09-20 18:20:14

相关问题