I have a simple yield use case and for some unknown reason the default case is never shown:
In my super_admin layout I have:
<%= yield :body_id || 'super_admin_main' %>
My controller
class Superadmin::GolfsController < ApplicationController
layout "super_admin"
def show
end
end
My show view
With or without
<% content_for(:body_id) do %>sadmin_golfs<% end %>
With: sadmin_golfs is shown.
without: empty string is shown instead of super_admin_main
Can anyone reproduce the same behavior ?
Use parentheses:
Or
Without them it is assuming
yield (:body_id || 'super_admin_main')EDIT: Rails 3 uses
ActiveSupport::SafeBufferinstead of string/nil (Rails 2), so the output is not nil even if there is nocontent_forprovided. So try: