2014-11-23 45 views
1

我有根重定向到/welcome/about正確的路線:root to: redirect('/welcome/about')Rails的路徑助手不重寫URL在地址欄

當我要求localhost:3000/從我的位置吧,它重定向到localhost:3000/welcome/about預期。

但是,當我點擊使用路徑幫助程序(例如<%= link_to app_title, root_url %>),進行的鏈接時,它不會更改地址欄中的網址。

其他一切按預期工作。 link_to呈現爲localhost:3000,我收到了301與Location: http://localhost:3000/welcome/about的迴應,並且內容是從正確的模板呈現的。我在Ubuntu 14.04上的Firefox和Chrome中驗證了這些結果。

任何人都可以解釋這種瀏覽器行爲?有沒有解決方法?

+0

請試試這個:'<%= link_to app_title,'/'%>' – Rubyrider 2014-11-23 06:53:33

+0

好的建議,但我嘗試過'root_path','root_url','/'和普通ol'http://本地主機:3000'。所有結果都一樣。 – Justin 2014-11-23 07:12:15

回答

2

這聽起來像渦輪鏈接的副作用。

請參見:https://github.com/rails/turbolinks/issues/22

再往挖掘揭示了這個問題,通過加入X-XHR-Redirected-To報頭turbolinks拾起,以反映在地址欄重定向解決。它在控制器中調用redirect_to時有效,但在route.rb中重定向根目錄時似乎不起作用。這聞起來像一個錯誤,所以我創建了一個問題:https://github.com/rails/turbolinks/issues/434

作爲一個快速的解決方法,你可以一個data-no-turbolink屬性添加到錨標記(<%= link_to app_title, root_url, data: {'no-turbolink' => true} %>)。這將禁用turbolinks僅用於該鏈接。或者你可以使用直接進入/ welcome/about的命名路由幫助程序。

+0

哇,現貨!我評論了turbolinks(並從application.html.erb中刪除了javascript標籤),並且地址欄反映了新的URL。 有關變通辦法的任何建議?我目前的想法是一個自定義'root_path'助手,它返回'welcome_about_path'助手。 – Justin 2014-11-23 07:37:47

+0

我更新了我的答案,提供了有關該問題和潛在解決方法的更多背景。 – ihaztehcodez 2014-11-23 09:30:53

+0

非常感謝您的更新。我將使用about頁面的根路由和welcome_about的返回root_path的命名路由。 – Justin 2014-11-23 12:34:03