ruby-on-rails - ApplicationController 中具有参数值的类变量

标签 ruby-on-rails ruby

在应用程序 Controller 中,我有几个方法可以处理请求的 Controller 和操作名称。

为了遵循 DRY 原则,我想用这些参数定义共享变量。

class ApplicationController < ActionController::Base
   @@requested_action     = params[:action]
   @@requested_controller = params[:controller]
end

但我收到错误:未定义局部变量或方法“params” for ApplicationController:Class

为什么我不能这样做,我怎样才能实现我的目标?

最佳答案

我相信您已经拥有 Rails 为此目的定义的 controller_nameaction_name 变量。

如果你想按照你的方式来做,你必须将它定义为一个前置过滤器,因为参数只有在发出请求后才会存在。你可以这样做

class ApplicationController < ActionController::Base
  before_filter :set_action_and_controller

  def set_action_and_controller
    @controller_name = params[:controller]
    @action_name = params[:action]
  end
end

您可以通过@controller_name 和@action_name 访问它们。但是 controller_nameaction_name 已经在 Rails 中定义了。您可以直接使用它们。

关于ruby-on-rails - ApplicationController 中具有参数值的类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6520042/

相关文章:

ruby-on-rails - 如何在 Rails 中为具有多个关键字段的资源定义 RESTful 路由?

ruby-on-rails - 动态属性列表 rabl

html - 在 Ruby 中删除特定的 HTML 元素

ruby - ||之间的区别a = b 和 a = a || b 在 ruby 中?

ruby-on-rails - Ruby 散列按多个值分组

ruby-on-rails - 如何从头开始我的 Ruby 环境?

ruby-on-rails - 在 RSpec/Rails 中 stub 类方法时遇到问题(并在 stub 上使用动态返回)

ruby-on-rails - Ruby on Rails 文件下载链接

ruby-on-rails - 即使使用 sudo,如何拒绝访问 postgres 目录?

ruby-on-rails - 将 Orchestrate.io 与基本的 Rails 应用程序结合使用