我的设置:Rails 3.0.9,Ruby 1.9.2
我正在使用Cancan来授权控制器操作。如果用户指定了缺少的ID,那么我有以下代码
application_controller.rb
rescue_from ActiveRecord::RecordNotFound do |exception|
flash[:alert] = "Oops, I cannot find this record, please try again."
respond_to do |format|
format.html { redirect_to root_url }
end
end
我希望上面的代码将flash消息设置为
flash[:alert] = "Oops, I cannot find this person, please try again."
在这种情况下,“人”可以是任何模型,例如,如果用户试图访问某个国家的缺失ID,则应该说
flash[:alert] = "Oops, I cannot find this country, please try again".
你明白了。我想我应该能够抓住原始呼叫和控制器,有人知道如何做到这一点或有更好的方法吗?
答案 0 :(得分:3)
你可以做的一件事是解析exception.message
,它通常包含一个看起来像这样的字符串
“无法找到ID = 03的图像[WHERE images.state ='已发布']”
但我会用
params
对象访问控制器和导致错误的操作
flash[:alert] = "Oops, I cannot find this #{params[:controller].upcase.singularize}, please try again."
欢呼声