3

以前は、Typus ルートを必要な場所に正確にロードすることができました。

  Typus::Routes.draw(map)

routes.rb ファイルの適切な場所に配置します。これはサポートされなくなり、すべてのアプリケーション ルートの後に常に読み込まれるようです。これにより、最後に定義する必要があるキャッチオール ルートで問題が発生します。typusのロード順序を制御する方法を知っている人はいますか? 後でではなく、アプリのルートの前にそれらを定義する方法はありますか? ありがとう!

4

2 に答える 2

3

アプリのroutes.rbの最後にキャッチオールルートを残すことで回避しましたが、TypusURLの照合から除外しました。

# A catch all route
match '*path' => 'content#show', :constraints => lambda{|request|
  !request.path.starts_with?("/admin") # excluded if typus will be taking it...
}

これはあなたのために働くかもしれないし、今はうまくいくかもしれません...

于 2011-02-25T04:38:30.070 に答える
0

私は同じ答えを探しています。

現時点では、typusのconfig / routers.rbからコンテンツをコピーし、catchallルートの前にroutes.rbファイルに配置することにしました。

それは恐ろしい、ハック的な解決策ですが、それは私の当面の問題を解決しています。

例:

  # TODO: KLUDGE: MANUALLY BRING THE TYPUS ROUTES IN
  #       Typus used to provide :
  #           Typus::Routes.draw(map)
  #       But that is no longer the case.
  scope "admin", :module => :admin, :as => "admin" do

    match "/" => "dashboard#show", :as => "dashboard"
    match "user_guide" => "base#user_guide"

    if Typus.authentication == :session
      resource :session, :only => [:new, :create, :destroy], :controller => :session
      resources :account, :only => [:new, :create, :show, :forgot_password] do
        collection do
          get :forgot_password
          post :send_password
        end
      end
    end

    Typus.models.map { |i| i.to_resource }.each do |resource|
      match "#{resource}(/:action(/:id(.:format)))", :controller => resource
    end

    Typus.resources.map { |i| i.underscore }.each do |resource|
      match "#{resource}(/:action(/:id(.:format)))", :controller => resource
    end
  end
  # END KLUDGE

  # Catch all to the state page handler
  match '/:page' => 'pages#show', :as => 'page'
于 2011-02-15T23:39:53.277 に答える