私のアプリには、タグ付けされた持ち物が含まれています。ユーザー認証には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
これは、ルーティングが従わなければならないルートを Devise スコープの下で調べているようなものです。
簡単な修正の 1 つは、リンクを次のようにコーディングすることです。
<%= link_to "tagname", {:controller => "/belongings", :action => :with_tag, :tag_id => t.id} %>
これは、Devise スコープを追加せずに、ルート ディレクトリの下にコントローラーを強制します。
このソリューションは完全に醜いと思います。
より良いものを提案していただけますか?たとえば、route.rb のより良い設定はありますか?
ありがとう!