ActiveRecord::RecordNotFound in CountriesController#主页

ActiveRecord::RecordNotFound in CountriesController#home

提问人:user3457760 提问时间:5/9/2014 最后编辑:varduser3457760 更新时间:1/6/2016 访问量:77

问:

我可以输入一个 ID 号,但是当我有下面的代码时,我收到错误:

ActiveRecord::RecordNotFound in CountriesController#主页

 def home
   @pin = Country.last
   @countries = Country.all
   #<the issue is on this line below>
   @country = Country.find(params[:country_id])
   gon.lat = @pin.latitude
   gon.lon = @pin.longitude
   gon
   gon.countries = @countries
 end

我做错了什么?

Ruby-on-Rails ActiveRecord

评论

0赞 Shamsul Haque 5/9/2014
你检查过params[:country_id]。它是零还是有一定的价值?或者没有该国家/地区 ID 的记录。
0赞 user3457760 5/9/2014
当我这样做时,它会起作用!@country = Country.find_by(params[:country_id])
0赞 Babar 5/9/2014
@user3457760如果您使用find_by它不会抛出错误,但您应该确保这种情况不会发生吗?
0赞 Bill Woodger 6/16/2015
我的建议是,您通过页面底部的“联系我们”链接联系 StackOverflow,并要求与该 -31 帖子“脱离关系”。然后你找回你的代表。请按照建议的阅读进行阅读,并理解在您获得个人之前,一切都是真诚的。在这 meta.stackoverflow.com/q/296821/1927206 之后,Meta 成群结队兴高采烈地踩在你身上。试着坚持下去,从已经发生的事情中继续前进。

答:

2赞 fivedigit 5/9/2014 #1

find如果在数据库中找不到具有该 ID 的 则引发错误。ActiveRecord::RecordNotFoundCountry

您应该检查以下几点:

  • 是无吗?params[:country_id]
  • 在终端中,运行 ,找到您的路线并检查其中是否确实有参数。另请参阅路由文档rake routes:country_id
  • 如果不是 nil,则您的数据库中可能没有这样的国家/地区。params[:country_id]

有关更多信息,请参阅 Rails 文档