2011-01-15 9 views
139

私はそのようなのようなループしている。その後、私の真ん中部分には、どのように私は、現在のポストを変数を部分的なレール3に渡しますか?

<% @posts.each do |post| %> 
    <% render middle %> 
<% end %> 

にアクセスできますか?あなたが部分内のローカル変数postが利用できる必要があります。このよう

<% @posts.each do |post| %> 
    <%= render 'middle', :post => post %> 
<% end %> 

+0

こんにちはエリオット:あなたも、各ポストの間にスペーサーテンプレートをレンダリングすることができますローカル変数「ポスト」

持つ全ての投稿のためのTiAlポスト。 index.html.erbの内部で_show.html.erbをレンダリングする。show partialはモーダルを含む。私がshow linkを押すと、別のIDを表示するのではなく、同じIDを表示していることを除いて、すべてうまく動作しています。 – learner

答えて

235

はこれを試してみてください。

+18

あなたは<%= %>でなく、<% %>タグが必要です。そうしないと、レンダリングされません。 – Ryan

+0

ありがとうございます。修正されました。 – polarblau

+4

rails 3.1.xの場合、 '<%= render 'middle'、:post => post%>'が必要です。 – Archonic

10

<%= render middle %><%= render middle, :post => post %>に置き換えます。その後、middle部分では、post変数にアクセスできます。あなたは今、部分的

14
<% @posts.each do |post| %> 
    <% render middle, :post => post %> 
<% end %> 

は、レールはまた、レンダリングするためのショートカットを持っていますコレクション:

<%= render :partial => 'post', :collection => @posts %> 

この場合、私は、標準的な足場でこれを使用してい

<%= render :partial => 'post', :collection => @posts, :spacer_template => 'post_divider' %> 
124

内のローカル変数postなどのアクセスポストはもちろん、ローカル変数として部分的

<%= render :partial => 'middle', :locals => { :post => post } %> 

にそれを与えることができます

+14

:spacer_templateオプションについては分かりませんでした。ありがとう! –

+11

Rails 3を使用する場合、:localsハッシュは必要ないことに注意してください。引数ハッシュは引数に変換され、部分に渡されます。 – superluminary

+4

私はまだ必要です:それは動作するために地元のハッシュ..私は3.2.12 – mck

関連する問題