2011-08-30 71 views
5

我想一些有條件的開放式圖形標記添加到我的應用程序,使用current_page,但我發現了一個路由錯誤:使用current_page在rails中路由錯誤?

這是我得到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:

但是,但是,這種實現假定是使這個部分的頁面有ID作爲PARAM。如果他們不這樣做,最好使用一個局部變量。

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