呈现部分通路内的内容= yield

呈现部分通路内的内容= yield

问题描述:

我使用ruby在rails上创建应用程序,其中包含项目/ _item.html.erb。在部分内部是一个yield语句,所以我可以根据需要添加额外的内容。在这种情况下,我想添加一个特定的按钮到项目取决于哪些视图调用部分。呈现部分通路内的内容= 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中

编辑:

我发现,它是:收集散,使得它不可能插入块。

这件工作代码的两种:

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

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

这意味着,如果我做了。每次我可以完成我想要什么,但它会是丑陋的代码。任何人都知道解决这个问题?

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中,我们可以使用content_for而不是yield'' – rajkamal

+0

有没有机会抛出渲染调用如何的快速示例? – roloenusa