我使用设计插件,有current_user
助手。我的用户可以在应用程序中有许多配置文件,所以用户有has_many :profiles
,并且总是其中一个是活跃的。
如何以及在哪里创建辅助current_profile
对
您可以在ApplicationController
中创建帮助器,这将使从它继承的所有控制器和视图可用:
class ApplicationController < ActionController::Base
protect_from_forgery
helper_method :current_profile
private
def current_profile
# get current_profile based on current_user here
end
end
现在你可以在任何视图/控制器中使用current_profile
在User
类中,我将添加一个方法
class User
has_many :profiles
def current_profile
@current_profile ||= profiles.where('current = ?', true).first
end
end
然后在你的控制器/助手中你可以写:
current_user.current_profile
至于如何,实际上只是找出哪个配置文件是活动的问题(我假设一个用户在给定的会话中只能有一个活动的配置文件-这会使它更容易)。所以,你要做的就是使用会话信息找到当前用户,然后找到活动的配置文件,然后你就完成了。
至于在哪里,这确实是一个范围的问题。如果您想让helper方法可用于任何视图,只需在应用程序控制器中声明它,就可以了。