3

过去,您可以通过将 Typus 路由准确地加载到您需要的位置

  Typus::Routes.draw(map)

在您的 routes.rb 文件中的适当位置。似乎不再支持这一点,并且它们总是在所有应用程序路由之后加载。这会导致必须最后定义的包罗万象的路线出现问题。有谁知道现在如何控制 typus 的加载顺序?有没有办法在任何应用程序路由之前而不是之后定义它们?谢谢!

4

2 回答 2

3

我通过在我的应用程序 routes.rb 的末尾留下我的全部路由来解决它,但将它排除在匹配 Typus url 之外:

# 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/routes.rb 复制内容并将其放入我的 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 回答