簡體   English   中英

Ruby on Rails:控制器和視圖可用的常用方法?

[英]Ruby on Rails: Common method available for controllers and views?

我一直在使用Ruby on Rails很短的時間。 最近我為我的應用程序實現了一個認證系統。 我在'application_helper.rb'上提供了一個方法來檢索當前記錄的用戶(名為current_user的方法)。

如果session[:user_id]變量存在,該方法只檢索我的User對象。

但是我面臨以下問題。

  1. 如果我將current_user方法放在' application_helper.rb '中,我的控制器就無法使用它
  2. 如果我將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.

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