[英]Ruby on Rails: Common method available for controllers and views?
我一直在使用Ruby on Rails很短的時間。 最近我為我的應用程序實現了一個認證系統。 我在'application_helper.rb'上提供了一個方法來檢索當前記錄的用戶(名為current_user的方法)。
如果session[:user_id]
變量存在,該方法只檢索我的User
對象。
但是我面臨以下問題。
current_user
方法放在' application_helper.rb '中,我的控制器就無法使用它 current_user
方法放在' application_controller.rb '中,我的視圖就無法使用它 解決這個問題的最佳方法是什么? 簡單的方法是在控制器和幫助器中復制我的代碼,但我知道有更好更正確的方法。
提前致謝
這是一個常見且解決得很好的問題。
Rails不允許控制器訪問輔助方法。 如果要在視圖和控制器之間共享方法,則需要在控制器中定義方法,然后使用helper_method
使其可用於視圖:
class ApplicationController < ActionController::Bbase
# Let views access current_user
helper_method :current_user
def current_user
# ...
end
end
您可以將多個方法名稱傳遞給helper_method
以使控制器中的其他方法可用於您的視圖:
helper_method :current_user, :logged_in?
def current_user
# ...
end
def logged_in?
!current_user.nil?
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.