2012-06-29 2 views
0

홈페이지에있을 때 링크가 잘 작동하는 앱이 있는데, "사용자"와 같은 리소스에 속한 페이지에있을 때 링크가 표시됩니다 좀 이상하다.레일즈 앱이 불필요하게 링크가없는 상태로 되겠습니다.

"홈페이지"에있는 링크를 클릭하면 "정보"페이지에 대한 링크를 직접 클릭합니다. 하지만 사용자/색인 페이지에서 '정보'페이지의 링크를 가리키면 목적지가 '사용자/약'인 것으로 나타납니다.

내 경로 파일의 모양은 다음과 같습니다.

RobotimusApp::Application.routes.draw do 

    resources :users 

    root to: "pages#home" 

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

end 

다음은 사용 가능한 모든 경로의 목록을 얻을 것이다 터미널에서 rake routes를 실행하면 내 탐색 모음이

%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

Welp해야 당신에 대한 페이지의 링크를 생각, 문제는이 라인에있다 문자열 'about'. link_to이 URL 매개 변수로 문자열을 받으면 라우터 등을 통해 실행하지 않습니다. 그것이 당신이 가고자하는 URL이라고 가정합니다. (. 결국, about_path 등을 반환 문자열) 그래서

, 당신은 HTML에서이 같은 끝낼 : 여기

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

, about 상대 URL이며, 경로 /users에서 그렇게 /users/about으로 갈 것입니다.

당신은 단지 그것을 절대 경로 확인하기 위해 선행 슬래시를 사용할 수 있습니다

= link_to 'About', '/about' 

을하지만 우리는 대신 경로를 사용할 수있는 경우는 하드 코드 우리의 URL을에 특히 레일-Y 아니다. 당신은 아마이 같은 뭔가를거야 :

= link_to 'About', about_pages_path 

(가 about_pages 경로 이름이 아마해야 당신은 항상 as 매개 변수로 이름을 지정할 수 있습니다?..) 믿을 수 없을만큼 철저한 설명은

+1

감사합니다! –

1

의 모습입니다.

가 대신 about_path 같은 라우팅 경로에 전달
=link_to 'About', 'about' 

, 우리가 전달 :

= link_to 'About', about_pages_path 
관련 문제