2012-04-30 11 views
4

私は、さまざまなビュー(ゲームやプロモーション)で使用される部分を構築しています。 私はビュー/アプリケーションRails、部分にパス変数を渡す

<%= content_tag :article, class: ['article'] do %> 
    <a href="#"> 
    <%= image_tag item.thumbnail %> 
    </a> 
    <h2><%= item.name %></h2> 
    <p><%= item.description %></p> 
    <p> 
    <%= link_to 'Read more', "#" %> 
    </p> 
<% end %> 

で部分的に作成したと私は見(またはプロモーション)ビューのゲームからそれを呼び出す:

<% @games.each do |item| %> 
    <section> 
     <%= render 'application/item_synopsis_builder', item: item %> 
    </section> 
<% end %> 

それは部分的に移入してレンダリングするために正常に動作しますが、私は部分的にview_pathに渡す方法を躊躇しないので、一時的に#を<%= the_right_path =>に置き換えます。

私が実行しようとしました:

<%= render partial: 'application/item_synopsis_builder', locals: {item: item, path: game_path } %> 

しかし、私はちょうど、エラーメッセージが出ます:

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

をしかし、私はHREF = "#" で部分的にレンダリングする場合は、それがうまくレンダリングします。

私はhref="<%= "#{item}_path" %>"で私の運を試しましたが、オブジェクトアイテムのrefを印刷するだけです。

乾杯

答えて

4

私にはわからないが、これはあなたのエラーですが、それはgame_pathがあなたのエラーの可能性があります引数としてゲームオブジェクトを、期待するように私には思えます。

EDIT:

<% @games.each do |item| %> 
    <section> 
    <%= render partial: 'application/item_synopsis_builder', locals:{item: item, path: game_path(item) %> 
    </section> 
<% end %> 
+0

game_pathはゲームビュー/コントローラ/私の現在のものから利用できませんか? –

+0

はい、そうです。しかし、 'game_path'は特定のゲームへのパスです(show、update、destroyに使われます)ので、idを取得するにはゲームオブジェクトが必要です。インデックスページにリンクしたい場合は 'games_path'( 's'に気付く)を使います。 – ksol

+0

いいえ私は個々のゲームへのパスをレンダリングしたいですか?私はゲームのリストを作成しており、それぞれのページにリンクする必要があります。 –

1

あなたが探しているURLがモデルにちなんで命名されている場合は、あなたが簡単に行うことができます。

<%= link_to "Read more", item %> 

これは自動的に応じて、あなたのためgame_pathpromotion_pathを生成します。アイテムに。

この魔法をすべて行う方法は、polymorphic_urlと呼ばれています。

あなたの現在の例が機能しないのは、オブジェクトをgame_pathに与えなかったためです。現在、どのIDを生成するのかはわかりません。 {:action=>"show", :controller=>"games"}に一致するルートはありませんが、{:action=>"show", :controller=>"games", :id=>"something"}に一致するルートがあります。

+0

これはlink_toヘルパーでうまくいきます。それから私はstoopid質問があります。 link_toヘルパーでタグをラップすることは可能ですか? –

+0

あなたは次のような意味ですか? '<%= link_to content_tag(:div、" foo ")、item%>'?あなたが 'link_to'と' form_for'の外で自動URL生成をする必要があるなら、あなたは 'url_for'を使うことができます。 – iain

+0

ヨップ私はそういうものを探していました。私はちょうど<%= link_to(item)do%> <%= image_tag item.thumbnail%> <% end -%> を試してみました。url_forヒントありがとう:) –

関連する問題