cou*_*lix 9 ruby ruby-on-rails view ruby-on-rails-3
我有一个简单的yield用例,由于某些未知原因,默认情况从未显示:
在我的super_admin布局中,我有:
<%= yield :body_id || 'super_admin_main' %>
Run Code Online (Sandbox Code Playgroud)
我的控制器
class Superadmin::GolfsController < ApplicationController
layout "super_admin"
def show
end
end
Run Code Online (Sandbox Code Playgroud)
我的秀视图
有还是没有
<% content_for(:body_id) do %>sadmin_golfs<% end %>
Run Code Online (Sandbox Code Playgroud)
随着:sadmin_golfs显示.
without:显示空字符串而不是super_admin_main
任何人都可以重现相同的行为吗?
Dir*_*n12 26
尝试 <%= yield(:title).presence || 'My Default Title' %>
Object#presence相当于object.present? ? object : nil(AS 3 rc docs),并且基本上允许带有标题的传统语法.
Voy*_*yta 19
使用括号:
<%= (yield :body_id) || 'super_admin_main' %>
Run Code Online (Sandbox Code Playgroud)
要么
<%= yield(:body_id) || 'super_admin_main' %>
Run Code Online (Sandbox Code Playgroud)
没有它们就是假设 yield (:body_id || 'super_admin_main')
编辑:Rails 3使用ActiveSupport::SafeBuffer而不是字符串/ nil(Rails 2),因此即使没有content_for提供输出也不是nil .所以尝试:
<%= yield(:body_id).empty? ? 'super_admin_main' : yield(:body_id)%>
Run Code Online (Sandbox Code Playgroud)