4

さまざまなビュー (ゲームとプロモーション) で使用されるパーシャルを構築しています。ビュー/アプリケーションでパーシャルを作成しました

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

パーシャルを設定してレンダリングするのはうまくいきますが、一時的な # を <%= the_right_path => に動的に置き換えるように、パーシャルに view_path を渡す方法がわかりません。

私はやろうとしました:

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

しかし、エラーメッセージが表示されます:

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

しかし、href="#" でパーシャルをレンダリングすると、正常にレンダリングされます。

私も運を試してみましhref="<%= "#{item}_path" %>"たが、オブジェクトアイテムの参照を出力するだけです。

乾杯

4

3 に答える 3

1

探している URL がモデルにちなんで名付けられている場合は、次のように簡単に実行できます。

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

これは、アイテムに応じて、game_pathまたは自動的に生成されます。promotion_path

このすべての魔法を行うメソッドは と呼ばれpolymorphic_urlます。

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

于 2012-04-30T14:45:28.760 に答える