我正在申请模板中执行以下操作:
<%= yield(:content) or yield %>
我有一个嵌套在应用程序模板中的问题模板。 但是,对于我的问题索引,我只想显示应用程序模板,而不是问题模板。
因此,我像这样覆盖它:
format.html { render :layout => "application"}
这会覆盖模板,以便呈现应用程序模板,而不是问题模板。但是,似乎“或收益”声明似乎不起作用;我的内容是空白的。当我将应用程序模板更改为:
时,它工作正常<%= yield %>
我需要原始声明,所以我可以拥有嵌套模板。 我不想在整个网站上编写content_for,以便拥有一个嵌套模板。
有什么想法吗?
答案 0 :(得分:2)
这样的事情可以解决问题:
取代
<%= yield(:content) or yield %>
使用:
<%= content_for?(:content) ? yield(:content) : yield %>
希望这有帮助。
答案 1 :(得分:0)
不是直接答案,但您能否提供有关您的设置的更多详细信息?我觉得你没有“正确”这样做,也就是说,我认为你不需要yield(:content)
。我对你实际提供content_for :content
的情况特别感兴趣。既然你没有在这种情况下调用yield(没有params),我不明白你为什么不简单地提供yield的内容(没有params)而不是yield(:content)
。
除了另一个答案之外,如果解决方案不起作用,您还可以尝试(c = yield(:content)).present? ? c : yield
。