2011-08-30 20 views
5
私は current_pageを使用してアプリケーションに条件付きオープングラフタグを追加しようとしていますが、ルーティングエラーが発生しています。私の部分的な:

current_pageを使用したレールのルーティングエラー?

<% 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

関連する問題