本文介绍了收益率和默认情况 ||不输出默认情况的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个简单的 yield 用例,但出于某种未知原因,默认情况从未显示:
I have a simple yield use case and for some unknown reason the default case is never shown:
在我的 super_admin 布局中,我有:
In my super_admin layout I have:
<%= yield :body_id || 'super_admin_main' %>
我的控制器
class Superadmin::GolfsController < ApplicationController
layout "super_admin"
def show
end
end
我的节目视图
有无
<% content_for(:body_id) do %>sadmin_golfs<% end %>
与:显示 sadmin_golfs.
With: sadmin_golfs is shown.
without:显示空字符串而不是 super_admin_main
谁能重现同样的行为?
推荐答案
使用括号:
<%= (yield :body_id) || 'super_admin_main' %>
或
<%= yield(:body_id) || 'super_admin_main' %>
没有它们,它假设 yield (:body_id || 'super_admin_main')
Rails 3 使用 ActiveSupport::SafeBuffer
而不是 string/nil (Rails 2),因此即使没有提供 content_for
,输出也不是 nil.所以试试:
Rails 3 uses ActiveSupport::SafeBuffer
instead of string/nil (Rails 2), so the output is not nil even if there is no content_for
provided. So try:
<%= yield(:body_id).empty? ? 'super_admin_main' : yield(:body_id)%>
这篇关于收益率和默认情况 ||不输出默认情况的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!