我正在使用Rails 3.2.3和ActiveResource。 我在制作中遇到一个问题:
ActiveResource::ResourceNotFound: Failed. Response code = 404. Response message = Not Found.
所以我试着像对待ActiveRecord::RecordNotFound
一样对待它:
class ApplicationController < ActionController::Base
protect_from_forgery
rescue_from ActiveRecord::RecordNotFound do |e|
render_404
end
rescue_from ActiveResource::ResourceNotFound do |e|
render_404
end
def render_404
respond_to do |type|
type.html { render template: 'shared/404_not_found', layout: 'application', status: '404 Not Found' }
type.all { render nothing: true, status: '404 Not Found' }
end
end
end
但是现在,当我部署时,我收到一个错误告诉我:
/apps/com.example/shared/bundle/ruby/1.9.1/gems/activeadmin-0.4.3/lib/active_admin/namespace.rb:191:in `eval': uninitialized constant ActiveResource::ResourceNotFound (NameError)
我真的不明白。我尝试使用if defined?(ActiveResource::ResourceNotFound)
但后来又回到了以前的行为。
知道如何处理这个问题?
谢谢!
编辑:目前我使用了以下代码,但我对此并不满意。
rescue_from Exception do |e|
e.is_a?(ActiveResource::ResourceNotFound) ? render_404 : raise
end
答案 0 :(得分:2)
rescue_from "ActiveResource::ResourceNotFound" do |e|
render_404
end
将异常放在引号中,这样它就不会尝试在启动时对它进行评估(我假设,还没有加载ActiveResource)