我已经离开 Rails 一段时间了,所以也许我错过了一些简单的东西。
你怎样才能做到这一点:
<%= yield_or :sidebar do %>
some default content
<% end %>
Or even:
<%= yield_or_render :sidebar, 'path/to/default/sidebar' %>
在第一种情况下,我正在尝试:
def yield_or(content, &block)
content_for?(content) ? yield(content) : yield
end
但这会引发“未给出块”错误。
在第二种情况下:
def yield_or_render(content, template)
content_for?(content) ? yield(content) : render(template)
end
当没有定义内容时,这有效,但是一旦我使用 content_for 覆盖默认内容,它就会抛出相同的错误。
I used this https://stackoverflow.com/questions/2611278/rails-3-yield-return-or-callback-wont-call-in-view-yieldsidebar-rend作为一个起点,但似乎它只有在直接在视图中使用时才有效。
Thanks!
像这样的事情怎么样?
<% if content_for?(:whatever) %>
<div><%= yield(:whatever) %></div>
<% else %>
<div>default_content_here</div>
<% end %>
来自这个SO问题的灵感 https://stackoverflow.com/questions/193838/rails-check-if-yield-area-is-defined-in-content-for
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)