过去,您可以通过将 Typus 路由准确地加载到您需要的位置
Typus::Routes.draw(map)
在您的 routes.rb 文件中的适当位置。似乎不再支持这一点,并且它们总是在所有应用程序路由之后加载。这会导致必须最后定义的包罗万象的路线出现问题。有谁知道现在如何控制 typus 的加载顺序?有没有办法在任何应用程序路由之前而不是之后定义它们?谢谢!
过去,您可以通过将 Typus 路由准确地加载到您需要的位置
Typus::Routes.draw(map)
在您的 routes.rb 文件中的适当位置。似乎不再支持这一点,并且它们总是在所有应用程序路由之后加载。这会导致必须最后定义的包罗万象的路线出现问题。有谁知道现在如何控制 typus 的加载顺序?有没有办法在任何应用程序路由之前而不是之后定义它们?谢谢!
我通过在我的应用程序 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...
}
这可能对你有用,也可能现在对你有用……
我正在寻找相同的答案。
目前我已经求助于从 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'