1

私はこの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()

このスレッドと前のスレッドで助けてくれた人々に感謝します。

4

1 に答える 1

3

私はジャーニー1.0.4で同様の問題を抱えていて、私の小さなRails学習プロジェクトでデバイスを作成しました。デバイスのサインアップページの読み込みがルーティングエラーで失敗しました。views / layouts / application.html.erbとそのパーシャルによってサイトのヘッダーに追加されたリンクを変更することで、問題を修正することができました。

私はこのようにリンクを変更しました:

<%= link_to 'Home', {:controller=>'welcome', :action=>'index'} %>

に:

<%= link_to 'Home', {:controller=>'/welcome', :action=>'index'} %>

ルーティングが機能し始めました。

于 2012-09-04T06:49:15.250 に答える