2012-08-28 51 views
1

我開始在這個SO問題中排除我的「突然」破損路線問題: Devise /users/sign_in redirecting to wrong controller並在幫助下,我能夠將問題與從旅程1.0.3升級到當我更新到rails 3.2.7時發生了1.0.4。如你所知,我們需要在rails 3.2.8上應用重要的安全修補程序,但這意味着我必須使用旅程1.0.4,這會破壞我的設計路線。例如,我的自定義new_user_session路由是受歡迎的#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_unless()又建立在link_to()之上。

謝謝你誰幫助誰在這個線程和前一個人。

+0

請發佈您的'routes.rb'文件 – janders223

+0

良好的通話!你想要所有的還是僅僅以設計爲中心的路線? –

+0

除非可怕的時間很長,否則一切都很好 – janders223

回答

3

我有一個與旅程1.0.4類似的問題,並在我的小Rails學習項目中設計,其中加載設計註冊頁失敗,路由錯誤。我能夠通過更改由views/layouts/application.html.erb及其部分添加到網站標題的鏈接來解決問題。

我改變了這樣的鏈接:

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

到:

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

和路由開始工作。

+0

感謝您的建議。我今晚會嘗試一下。 –

+0

它是有道理的,因爲它看起來像軌道在渲染視圖時轟炸。我曾經認爲它是在重定向期間轟炸,但仔細檢查我的日誌顯示,當我們聽到驚天動地的kaboom時,發生了一堆HAML。 –

+0

查看編輯,但是這個建議讓我走下了解決方案的道路。 –

相關問題