Я давно не был в Rails, так что, возможно, мне не хватает чего-то простого.
Как вы можете это сделать:
<%= yield_or :sidebar do %>
some default content
<% end %>
Или даже:
<%= yield_or_render :sidebar, 'path/to/default/sidebar' %>
В первом случае я пытаюсь:
def yield_or(content, &block)
content_for?(content) ? yield(content) : yield
end
Но это порождает ошибку "без блока".
Во втором случае:
def yield_or_render(content, template)
content_for?(content) ? yield(content) : render(template)
end
Это работает, когда контент не определен, но как только я использую content_for для переопределения содержимого по умолчанию, он выдает ту же ошибку.
Я использовал этот в качестве отправной точки, но, похоже, он работает только при непосредственном использовании в представлении.
Спасибо!