确定始发控制器

时间:2011-07-06 06:55:30

标签: ruby-on-rails cancan

我的设置: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".

你明白了。我想我应该能够抓住原始呼叫和控制器,有人知道如何做到这一点或有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

你可以做的一件事是解析exception.message,它通常包含一个看起来像这样的字符串

“无法找到ID = 03的图像[WHERE images.state ='已发布']”

但我会用 params对象访问控制器和导致错误的操作

像这样:

    flash[:alert] = "Oops, I cannot find this #{params[:controller].upcase.singularize}, please try again."

欢呼声