产量或产量

时间:2012-03-05 02:19:55

标签: ruby-on-rails templates

我正在申请模板中执行以下操作:

<%= yield(:content) or yield %>

我有一个嵌套在应用程序模板中的问题模板。 但是,对于我的问题索引,我只想显示应用程序模板,而不是问题模板。

因此,我像这样覆盖它:

  format.html { render :layout => "application"} 

这会覆盖模板,以便呈现应用程序模板,而不是问题模板。但是,似乎“或收益”声明似乎不起作用;我的内容是空白的。当我将应用程序模板更改为:

时,它工作正常
<%= yield %>

我需要原始声明,所以我可以拥有嵌套模板。 我不想在整个网站上编写content_for,以便拥有一个嵌套模板。

有什么想法吗?

2 个答案:

答案 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