我的应用程序包含标记的物品。它使用 Devise 进行用户身份验证。
链接到“忘记密码?”时出现以下路由错误 设计链接:
No routes matches {:controller => "devise/belongings", :action => "with_tag", :tag_id => 1}
发出此错误的链接是
<%= link_to "tagname", {:controller => :belongings, :action => :with_tag, :tag_id => t.id} %>
我的路由文件包含:
resources :belongings do
get 'with_tag', :on => :collection
get 'remove_tag', :on => :collection
end
和
devise_scope :user do
get "sign_in", :to => "sessions#new"
get "sign_out", :to => "devise/session#destroy"
get "sign_up", :to => "devise/registration#new"
end
就像路由正在设计范围内寻找它必须遵循的路由。
一个简单的解决方法是将链接编码为:
<%= link_to "tagname", {:controller => "/belongings", :action => :with_tag, :tag_id => t.id} %>
强制控制器在根目录下而不添加设计范围。
我觉得这个解决方案完全丑陋。
你能推荐一个更好的吗?例如在 route.rb 上的更好配置?
谢谢!