[英]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_name
和action_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_name
和action_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.