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

これは、ルーティングが従わなければならないルートを Devise スコープの下で調べているようなものです。

簡単な修正の 1 つは、リンクを次のようにコーディングすることです。

   <%= link_to "tagname", {:controller => "/belongings", :action => :with_tag, :tag_id => t.id} %>

これは、Devise スコープを追加せずに、ルート ディレクトリの下にコントローラーを強制します。

このソリューションは完全に醜いと思います。

より良いものを提案していただけますか?たとえば、route.rb のより良い設定はありますか?

ありがとう!

4

0 に答える 0