私はこのSOの質問で「突然の」壊れたルートの問題のトラブルシューティングを開始しました: 間違ったコントローラーにリダイレクトする/ users / sign_inを考案し、助けを借りて、私が行ったときに発生したジャーニー1.0.3から1.0.4へのアップグレードに問題を切り分けることができましたレール3.2.7に更新されました。
ご存知のように、重要なセキュリティ修正を適用するには、Rails 3.2.8にいる必要がありますが、これは、私が考案したルートを壊すジャーニー1.0.4を使用する必要があることを意味します。たとえば、私のカスタムnew_user_sessionルートはwelcome#welcomeですが、存在しないdevise / welcome#welcomeにデコードされています。
他の誰かがこの三角関係に遭遇したことがありますか?もしそうなら、どのようにしてジャーニー1.0.4をデバイスでうまくプレイさせましたか?
壊れているルート(ルートとデバイスのルート:
devise_for :users
devise_scope :user do
get "/login" => "devise/sessions#new"
get "/register" => "devise/registrations#new"
end
match '/signout/confirm' => 'signouts#confirm'
root :to => "welcome#welcome"
================================================== ==============
編集:2012-09-05
解決:
問題のあるLOCを見つけました:
link_to_unless_current( logo_image, { :controller => 'welcome', :action => 'welcome' } )
私はそれを次のように変更しました:
link_to_unless_current( logo_image, { :controller => '/welcome', :action => 'welcome' } )
無駄に。
好奇心から、私はそれを次のように変更しました:
link_to( logo_image, { :controller => '/welcome', :action => 'welcome' } )
そしてそれはうまくいきました:
link_to( logo_image, { :controller => 'welcome', :action => 'welcome' } )
だから私が最後に試したのは:
link_to_unless_current( logo_image, root_path )
これはうまくいきました、そしてすべては今宇宙でうまくいっています。
事後分析:railsのドキュメントに不慣れだったlink_to()
ため、root_pathをパラメーターとして受け入れる一方で、受け入れないだろうと推測しましたlink_to_unless_current()
。メソッドのソースコードを調べて初めて、が上に構築され、次にlink_to_unless_current()
上に構築されていることがわかりました(そして、ずっと想定していたはずです)。link_to_unless()
link_to()
このスレッドと前のスレッドで助けてくれた人々に感謝します。