【发布时间】:2011-03-21 19:29:10
【问题描述】:
我已经离开 Rails 一段时间了,所以也许我错过了一些简单的东西。
你怎么能做到这一点:
<%= yield_or :sidebar do %>
some default content
<% end %>
甚至:
<%= 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 覆盖默认内容,它就会引发相同的错误。
我使用this作为起点,但它似乎只在直接在视图中使用时才有效。
谢谢!
【问题讨论】:
标签: ruby-on-rails views rendering