1

Rails を使用して、コントローラーで定義された配列をループし、各アイテムのパーシャルを作成し、パーシャル内の各アイテムの値にアクセスするにはどうすればよいですか?

コントローラー

「グラファー」ページの配列を定義します。

class StaticPagesController < ApplicationController
  def home
  end

  def grapher
    @available_graphs = ["pie.png", "line.png", "lineplusbar.png"]
  end
end

ページビュー

私のgrapher.html.erb見解では、配列をループして、各アイテムのパーシャルを作成したいと考えています。

<%= render :partial => 'graphPreviewItem', :collection => @available_graphs %>

部分的なビュー

パーシャル内の配列項目にアクセスするにはどうすればよいですか?

<div class="thumbnailContainer">
    <a class="thumbnail" href="#">
        <%= image_tag "this should be the array item value" %>
    </a>
</div>
4

4 に答える 4

1

正規の Rails ガイドのセクション 3.4.4によると:

パーシャル内でカスタム ローカル変数名を使用するには、パーシャルの呼び出しで :as オプションを指定します。この変更により、パーシャル内の [a] ローカル変数としてコレクションのインスタンスにアクセスできます。

したがって、@available_graphsインスタンス変数をコレクションとしてパーシャルに渡します。パーシャルは、コレクションの各メンバー (この場合は文字列の配列) に対してレンダリングされます。item各パーシャル内で、反復されるコレクション メンバーは、ローカル変数を介してアクセスできます。

# grapher.html.erb
<%= render :partial => 'graph_preview_item', :collection => @available_graphs, :as => :item %>

# _graph_preview_item.html.erb
<div class="thumbnailContainer">
    <a class="thumbnail" href="#">
        <%= image_tag item %>
    </a>
</div>
于 2013-10-29T06:17:53.747 に答える
1

したがって、2つの方法があります:-

1)次のようにアクセスするだけですavailable_graph

# _graph_preview_item.html.erb
<div class="thumbnailContainer">
  <a class="thumbnail" href="#">
    <%= image_tag available_graph %>
  </a>
</div>

2)asオプションを使用して、別の名前でアクセスできます

<%= render :partial => 'graphPreviewItem', :collection => @available_graphs, :as => :graph %>

次に、名前でアクセスしますgraph

# _graph_preview_item.html.erb
<div class="thumbnailContainer">
  <a class="thumbnail" href="#">
    <%= image_tag graph %>
  </a>
</div>
于 2013-10-29T06:14:17.380 に答える
0
<%= render :partial => 'graphPreviewItem', :collection => @available_graphs, :as => image_val %> 

<div class="thumbnailContainer">
    <a class="thumbnail" href="#">
        <%= image_tag image_val %>
    </a>
</div>
于 2013-10-29T06:15:41.310 に答える