以下universal_methods.rb檔案放置在控制器目錄中以包含在控制器之間共享的方法。
class UniversalMethods
def initialise_municipal(user_params)
user_params = params[:user]
municipal_via_id = user_params[:municipal_id]
[...]
end
end
UserController 方法被實體化并包含一個呼叫上面的方法:
require_dependency 'universal_methods'
class UsersController < ApplicationController
def admin_create
set_user_login_name
user_params = params[:user]
initialise_municipal(user_params)
[...]
end
我已經測驗過應用程式訪問了檔案(通過使用require它抱怨找不到 if)。但是,該方法絕對無法訪問:
NoMethodError: undefined method #UsersController:...`
這種語法/設定有什么問題?
uj5u.com熱心網友回復:
要嚴格修復您需要的代碼,UniversalMethods.new.initialise_municipal(user_params)而不僅僅是initialise_municipal(user_params)需要該檔案,因為其中的所有內容/controllers都是自動加載的。
另一種方法是使用Concerns。創建一個檔案夾app/controllers/concerns并放在universal_methods.rb那里。
對于 Rails 6
# app/controllers/concerns/universal_methods.rb
module UniversalMethods
extend ActiveSupport::Concern
included do
def initialise_municipal(user_params)
user_params = params[:user]
municipal_via_id = user_params[:municipal_id]
end
end
end
# app/controllers/users_controller.rb
class UsersController < ApplicationController
include UniversalMethods
def admin_create
set_user_login_name
user_params = params[:user]
initialise_municipal(user_params)
[...]
end
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/375560.html
標籤:红宝石轨道
