呈现部分通路内的内容= 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 %>
你是如何工作了这一点?我已经尝试在渲染的上方,下方和周围设置content_for代码,并且仍然无法看到正在渲染的部分内容。是否因为我也在使用集合? – roloenusa
在_item.html.erb中,我们可以使用content_for而不是yield'' – rajkamal
有没有机会抛出渲染调用如何的快速示例? – roloenusa