-1

私のアプリケーションには、Company、Division、Users.... Company - 多くの Division があり、Users - は 1 つ以上の Division に属しています。

ユーザーがログインすると、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 メソッドを呼び出します

4

2 に答える 2

1

メソッドを移動し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いつでもどこでも切り替えて呼び出したい場合は、セッション変数を設定するだけです。

于 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 に答える