-1

在我的应用程序中,我有公司、部门、用户......公司 - 有许多部门,用户 - 属于一个或多个部门。

用户登录时,在 Application_controller 中将 current_division 设置为 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 方法

4

2 回答 2

1

您可以将该方法移入ApplicationController并使其成为辅助方法。session每当您想切换分区时设置变量。你应该把你的存储division_idsession. 您的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当您想随时随地切换和调用时,您只需要设置会话变量。

于 2015-05-22T06:41:43.437 回答
1

您可以在导航栏上有一个下拉菜单,您可以在其中加载所有部门。在下拉列表中选择当前分区。在 url 参数上传递当前的除法参数。检查应用程序控制器中的参数并设置分区。

class ApplicationController < ActionController::Base
  before_filter :set_current_division

  def set_current_division
     @current_division = Division.find_by_name(params[:division_name])
  end

end
于 2015-05-22T06:42:29.987 回答