0

Deviseで奇妙なルーティングの問題が発生しました。最近、RailsアプリのDeviseを介して電子メールの確認を追加し、ユーザーが登録後に電子メールの確認を再送信できるように、確認/新しいアクションを設定しようとしました。

これが、Deviseユーザー認証の現在のルート設定です。

devise_for :users do    
    match 'users/logout' => 'devise/sessions#destroy'
end

そして、レーキルートを実行した後、これは私が望む適切な新しい確認パスのために私が得るものです:

new_user_confirmation GET    /users/confirmation/new(.:format)     {:action=>"new", :controller=>"devise/confirmations"}

新しい確認メールアクションへの私のリンクは次のとおりです。

<%= link_to "Didn't receive unlock instructions?", new_user_confirmation %>

このリンクをクリックすると、URLにリダイレクトされます/users/confirmation/new.userが、ルーティングエラーが発生します。

ルーティングエラー

{:controller => "devise / tournaments"、:action=>"results"}に一致するルートはありません

Deviseは私のトーナメントコントローラーとは何の関係もなく、私のトーナメントコントローラーがデバイス関連の機能で参照されたこともないので、これは私には奇妙です。

Rails3.1とDevise2.1.2を使用しています

4

1 に答える 1

0

問題は、実際にはすべての場所のアプリケーションレイアウトに起因していました。これまで私が扱わなければならなかった唯一の工夫ビューは、登録ビューとsign_upビューであり、どちらもデフォルトでレイアウトをレンダリングしません。当然、このページもそうはならないと思い込んでいたので、気をつけていませんでした。

私のアプリケーションレイアウトでは、上記にリンクするルートがあり、:controller=>"devise/tournaments", :action=>"results"これを名前付きルートに変更するだけtournament_results_pathで問題が解決しました。

于 2012-07-17T19:34:13.013 に答える