Rails无法识别nil对象

时间:2013-10-18 23:13:26

标签: ruby-on-rails ruby

我在应用程序上遇到一些奇怪的错误,都与随机爬虫请求不存在的URL和Rails无法识别它有关。

即。 crawler请求[website] /local/favicon.ico并且下面的代码无法识别它应该呈现404,因为对象是nil,导致应用程序在第一次方法调用时中断:

@local = Local.find_by_slug(params[:c])
render_404(RuntimeError.new(request.path)) and return unless @local

我知道我可以阻止抓取工具IP,但它看起来不是最好的解决方案。

有没有人对如何使用Rails解决这个问题有任何想法?

1 个答案:

答案 0 :(得分:0)

在请求字符串中使用句点,然后在params哈希中查找它们。句点表示格式,因此示例中的params [:c]可能只是favicon,而不是完整路径名。

我建议在救援区处理这个问题,因为这种特殊方法看起来很脆弱。

尝试类似:

begin
  @local = Local.find_by_slug(params[:c])
rescue Exception => e
  # Choose to do something with e here (email admin etc.)
  render_404(RuntimeError.new(request.path)) and return
end