2011-08-24 4 views
6

私はitem/_item.html.erbを持つレール上にrubyを使ってアプリケーションを作成しています。部分的にはyield文ですので、必要に応じて余分なコンテンツを追加できます。この場合、どのビューがpartialと呼ぶかに応じて、アイテムに特定のボタンを追加したいと思います。部分的なビア内のコンテンツをレンダリングする= yield

これは私が試した、それは部分的にレンダリングするが、それはブロックを描画しないものです:

_item.html.erb

<%= yield if block_given? %> 
<div> 
    <%= item.name %> 
</div> 

someview.html.erb

... 

<% render(:partial => 'items/item', :collection => current_user.items do %> 
    <%= "HELLO" %>  
<% end %> 

... 

また、私はcontent_forなどいくつかのものを使ってみましたが、成功しませんでした。特定のコンテンツを部分収入内に収率で表示できる方法はありますか?

私はそれがだことが判明しました:それは不可能ブロックを挿入しますコレクションのハッシュ私は現在、Rails3

EDITを使用しています。

コードの仕事のこの部分の両方:

<%= render :layout => 'items/item' do %> 
     Hello world  
<% end %> 

<%= render :layout => 'items/item', :locals => {:item => current_user.items.first} do %> 
    Hello world  
<% end %> 

これは私が.eachを行う場合、私は私が欲しいものを達成できたが、それは醜いコードになることを意味しています。誰もがこれを回避する方法を知っていますか?

答えて

4

content_forこの場合は正常に動作するはずです。ここで私はちょうどローカルでチェックされたコードです。

somewhere.html.erb

<% content_for :foobar do %> 
    fubar 
<% end %> 

_item.html.erb

<% if content_for? :foobar %> 
    <%= yield :foobar %> 
<% end %> 
+1

どうやってこれを働いていますか?私は上記の内部、およびレンダリングの周りにcontent_forコードを設定しようとしましたが、私はまだ部分的にレンダリングされているコンテンツを見ることができません。私もコレクションを使っているからですか? – roloenusa

+0

_item.html.erbでは、yield <%content_forの代わりにcontent_forを使うことができます:foobar if content_for? :foobar%> ' – rajkamal

+0

レンダリングの呼び出し方法の簡単な例を投げることはできますか? – roloenusa

関連する問題