2012-06-29 21 views
0

我有一個應用程序,其中鏈接工作正常,當我在主頁上,但是當我在屬於資源,如「用戶」的頁面上,一些鏈接獲得有點奇怪。Rails應用程序獲取不必要RESTFUL與鏈接

當我在主頁上,然後點擊「關於」頁面的鏈接時,我直接進入該頁面。但是,如果我在用戶/索引的頁面上,並將鼠標懸停在「關於」頁面的鏈接上,則會將目標顯示爲「用戶/關於」。

這是我的路線文件的樣子。

RobotimusApp::Application.routes.draw do 

    resources :users 

    root to: "pages#home" 

    match '/about', to:'pages#about' 
    match '/guides', to:'pages#guides' 

end 

這裏是我的導航欄看起來像

%ul.nav 
    %li 
    =link_to 'Home', root_url 
    %li 
    =link_to 'About', 'about' 
    - if user_signed_in? 
    %li 
     = link_to('My Sites', user_path(current_user)) 

回答

2

韋爾普,問題就出在這行:

=link_to 'About', 'about' 

不是傳遞像about_path一個路由路徑中,我們通過在字符串'about'。當link_to收到一個字符串作爲它的URL參數時,它不會通過路由器或任何東西運行;它假定這是你想要去的URL。 (畢竟,about_path和類似返回一個字符串)

所以,你最終的HTML是這樣的:

<a href="about">About</a> 

這裏,about是一個相對URL,所以從路徑/users它將會去/users/about

可以只使用前斜線,以使其成爲絕對路徑:

= link_to 'About', '/about' 

但它不是特別的Rails-Y硬編碼我們的網址時,我們可以使用路由來代替。你可能要去的是這樣的:

= link_to 'About', about_pages_path 

(是about_pages航線名稱它可能應該是您可以隨時與as參數名稱呢?。)

+1

感謝您的令人難以置信的詳盡的解釋! –

1

如果你在一個終端上運行rake routes你會得到所有可用路由的列表。

認爲,鏈接,您的有關網頁應

= link_to 'About', about_pages_path 
相關問題