2010-01-11 11 views
0

저는 기본 레일 라우팅을 시도하고 있습니다. 저는 비계로 생성 한 페이지라는 모델을 가지고 있습니다. 나는루비 레일 경로 및 경로

'pages/addchild/:id' 
지금까지

너무 좋아 통해 액세스하고 싶은 방법이라고하는 AddChild을 추가했습니다. 그러나이 방법에 대한 링크를 다음과 같이 설정하고 싶습니다.

<%= link_to 'Add child page', addchild_page_path(page) %> 

현재 페이지의 ID를 매개 변수로 전달합니다. 나는 (링크입니다) 내 인덱스 뷰를로드 할 때

, 나는 다음과 같은 메시지가 얻을 : 경로/LINK_TO 방법이 어떻게 작동하는지

undefined local variable or method `addchild_page_path' for #<ActionView::Base:0xb67797d0> 

내가 오해 적이 있습니까?

내 루트 파일은 다음과 같다 :

map.resources :pages 
    map.connect ':controller/:action/:id' 
    map.connect ':controller/:action/:id.:format' 

어떤 조언을 크게 감상 할 수있다.

감사합니다.

답변

2

명명 된 경로 방법을 사용하려면 경로를 추가해야합니다.

map.resources :pages, :member => {:addchild => :get} 

당신에게 addchild_pages_path을 줄 것인가 (그리고 생성 된 실제 :

당신이 비계를 사용 언급하기 때문에, 당신은 아마 그래서 당신이해야 할 모든 메소드를 추가하고, 리소스로 경로 설정을 가지고 이 수완이되지 않기 때문에 당신이 수행 할 수 있습니다 페이지 클래스의 to_param를 사용하지 않습니다 (직접 id 메소드를 호출하지 마십시오 addchild_pages_path page : 경로는 다음과 같이 사용 /pages/:id/addchild

과 같을 것이다 나중에).

0 당신이 정말로 URL이 (내가하지 않는 것이 좋습니다) /pages/addchild/:id로 표시하려면

당신은 당신의 routes.rb에서 map.resources :pages 행하기 전에

map.addchild_page "/pages/addchild/:id", :controller => :pages, :method => :addchild 

을 추가 한 다음 위와 같이 경로 방법을 사용할 수 있습니다 .

+0

감사합니다. 예, URL을 기본 형식으로 지정하고 싶습니다. 단지 잘못 입력 한 것입니다. – Dan