1

我的应用程序包含标记的物品。它使用 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 上的更好配置?

谢谢!

4

0 回答 0