收益率和默认情况 ||不输出默认情况 [英] Yield and default case || do not output default case

查看:47
本文介绍了收益率和默认情况 ||不输出默认情况的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个简单的 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)%>

这篇关于收益率和默认情况 ||不输出默认情况的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆