簡體   English   中英

Class 變量與 ApplicationController 中的參數值

[英]Class variables with params values in ApplicationController

在應用 controller 中,我有幾種方法可以與請求的 controller 和操作名稱一起使用。

為了遵循 DRY 原則,我想用這些參數定義共享變量。

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

但我收到錯誤: undefined local variable or method "params" for ApplicationController:Class

為什么我不能這樣做,我怎樣才能實現我的目標?

我相信您已經為此目的定義了 Rails 定義的controller_nameaction_name變量。

如果您想按照自己的方式進行操作,則必須將其定義為 before 過濾器,因為 params 僅在發出請求后才存在。 你可以做這樣的事情

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 中定義了。 您可以直接使用它們。

改用實例方法:

class ApplicationController < ActionController::Base
  def requested_action
    params[:action] if params
  end
end

您可以使用 before_filter 選項。

class ApplicationController < ActionController::Base
  before_filter :set_share_variable

  protected

  def set_share_variable
    @requested_action     = params[:action]
    @requested_controller = params[:controller]
  end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM