Rails: 如何更改应用程序控制器中的变量
Rails: How to change the variable in Application Controller
在我的应用程序中,我有公司、部门、用户....公司 - 有很多部门,用户 - 属于一个或多个部门。
当用户登录时,current_division设置为Application_controller中的User.division[0]。我想实现一个用户可以在不同部门之间切换的功能。关于如何实现此功能的任何想法。
如何在Application_controller中更改current_division?此 current_division 被其他控制器和模型使用。
Class Division < ActiveRecord:Base
def self.current_div options={}
if options[:division_id].nil?
current_user.division[0]
else
Division.find_by_id(options[:id])
end
结束
当用户从下拉列表中选择不同的部门时,我调用 Division.current_div 方法
您可以移动ApplicationController
中的方法并将其作为辅助方法。每当你想切换分区时设置 session
变量。您应该将 division_id
存储在 session
中。您的 current_division
方法应该如下所示:
class ApplicationController < ActionController::Base
...
...
private
def current_division
if session[:division_id]
@current_division = Division.find_by_id(session[:division_id])
session.delete(:division_id)
else
@current_division ||= current_user.application[0] # not sure what are you trying to do here
end
end
helper_method :current_division
end
您只需调用 current_division
,它会检查 session[:division_id]
是否存在,并根据需要更新分区。当你想切换时,你只需要设置会话变量,随时随地调用current_division
。
您可以在导航栏上有一个下拉菜单,您可以在其中加载所有分区。 select 下拉列表中的当前分区。在 url params 上传递当前除法参数。检查应用程序控制器中的参数并设置分区。
class ApplicationController < ActionController::Base
before_filter :set_current_division
def set_current_division
@current_division = Division.find_by_name(params[:division_name])
end
end
在我的应用程序中,我有公司、部门、用户....公司 - 有很多部门,用户 - 属于一个或多个部门。
当用户登录时,current_division设置为Application_controller中的User.division[0]。我想实现一个用户可以在不同部门之间切换的功能。关于如何实现此功能的任何想法。
如何在Application_controller中更改current_division?此 current_division 被其他控制器和模型使用。
Class Division < ActiveRecord:Base
def self.current_div options={}
if options[:division_id].nil?
current_user.division[0]
else
Division.find_by_id(options[:id])
end
结束
当用户从下拉列表中选择不同的部门时,我调用 Division.current_div 方法
您可以移动ApplicationController
中的方法并将其作为辅助方法。每当你想切换分区时设置 session
变量。您应该将 division_id
存储在 session
中。您的 current_division
方法应该如下所示:
class ApplicationController < ActionController::Base
...
...
private
def current_division
if session[:division_id]
@current_division = Division.find_by_id(session[:division_id])
session.delete(:division_id)
else
@current_division ||= current_user.application[0] # not sure what are you trying to do here
end
end
helper_method :current_division
end
您只需调用 current_division
,它会检查 session[:division_id]
是否存在,并根据需要更新分区。当你想切换时,你只需要设置会话变量,随时随地调用current_division
。
您可以在导航栏上有一个下拉菜单,您可以在其中加载所有分区。 select 下拉列表中的当前分区。在 url params 上传递当前除法参数。检查应用程序控制器中的参数并设置分区。
class ApplicationController < ActionController::Base
before_filter :set_current_division
def set_current_division
@current_division = Division.find_by_name(params[:division_name])
end
end