过去,您可以通过放置
将Typus路线准确地加载到您需要的位置 Typus::Routes.draw(map)
在routes.rb文件中的适当位置。似乎不再支持它,并且它们总是在所有应用程序路径之后加载。这会导致必须在最后定义的捕获路线出现问题。有谁知道现在如何控制典型的加载顺序?有没有办法在任何应用程序路由之前而不是之后定义它们?谢谢!
答案 0 :(得分:3)
我通过在我的应用程序routes.rb的末尾留下我的catch-all路线来绕过它。但是将它排除在匹配的Typus网址之外:
# A catch all route
match '*path' => 'content#show', :constraints => lambda{|request|
!request.path.starts_with?("/admin") # excluded if typus will be taking it...
}
这可能或现在可能对你有用......
答案 1 :(得分: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'