6

私の webapp には管理者と通常のユーザーがいます。ルート(/)を人によって変えたい。ルートはさまざまなページからアクセスされるため、routes.rb ファイルでこれを実現できれば、はるかに簡単になります。これが私の現在のファイルです。

ProjectManager::Application.routes.draw do
  root :to => "projects#index"
end

誰かが私に進むべき方向を示すことができる例にリンクしてもらえますか? ルートファイルにロジックを入れる方法はありますか? すべての助けをありがとう。

4

3 に答える 3

6

ルートルートのコントローラーを作成するだけです。

class RoutesController < ActionController::Base
  before_filter :authenticate_user!

  def root
    root_p = case current_user.role
      when 'admin'
        SOME_ADMIN_PATH
      when 'manager'
        SOME_MANAGER_PATH
      else
        SOME_DEFAULT_PATH
      end

    redirect_to root_p
  end
end

あなたの routes.rb で:

  root 'routes#root'

PS の例ではDeviseの使用が想定されていますが、必要に応じてカスタマイズできます。

于 2015-05-07T11:10:53.260 に答える
0

ルートを実際に動的に変更することはできませんが、それを偽造する方法がいくつかあります。

必要なソリューションは、アプリケーション コントローラーまたは「デフォルト」ルート コントローラーのいずれかで実行する必要があります。最もクリーンで簡単な解決策は、そのページに対してのみ実行される before フィルターで、アプリケーション コントローラーを適切なアクションにリダイレクトさせることです。ただし、これによりユーザーの URL が変更され、実際にはルートにはなりません。

2 番目のオプションは、ルートとして指定したメソッドに、探している条件が何であれ、別のビューをレンダリングさせることです。ただし、別のビューをロードするだけでなく、ロジックに大幅な変更が必要な場合は、リダイレクトしたほうがよいでしょう。

于 2012-08-14T22:12:36.170 に答える