2011-08-30 1 views
5

내 응용 프로그램에 current_page을 사용하여 조건부 열린 그래프 태그를 추가하려고하지만 라우팅 오류가 발생합니다.current_page를 사용하여 레일에서 라우팅 오류가 발생 했습니까?

이것은 rake routes

product GET /products/:id(.:format) {:action=>"show", :controller=>"products"} 

에 대한 것입니다. 내 부분 :

<% if current_page?(:controller => 'products', :action => 'show') %> 
... 
<% end %> 

하지만 얻을 :

Routing Error 

No route matches {:controller=>"products", :action=>"show"} 

productproducts 사용하여 시도했지만 둘 다 작동하는 것. 이견있는 사람?

답변

5

당신은뿐만 아니라 ID를 전달해야합니다

<% if current_page?(:controller => 'products', :action => 'show', :id => params[:id]) %> 

UPDATE :

그러나, 그러나,이 구현은이 부분을 렌더링 페이지가 PARAM으로 ID를 가지고 있다고 가정합니다. 그렇지 않으면 로컬 변수를 사용하는 것이 좋습니다.

render :partial => 'blah_blah', :locals => {:id_for_route_verification => params[:id] || 0} 

및 부분 사용

은 새로운 지역 변수

<% if current_page?(:controller => 'products', :action => 'show', :id => id_for_route_verification) %> 

나는이 좀 해키 알고있다. 하지만 먼저 content_for을 사용하여 부분적으로 콘텐츠를 렌더링하는 것이 좋습니다. current_page? 접근 방식

+0

그래서이 문제가 해결책이라고 생각했는데 일치하지 않는 페이지가있을 경우 버그가 발생했습니다. 또는 URL의'params [: id]'에 404를 찾을 수 없다는 오류가 발생했습니다. – Slick23

+0

업데이트 대답 : – dexter

+0

감사. 'content_for' 접근법은 좋은 생각입니다. – Slick23