Я уже давно не в 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 для переопределения контента по умолчанию, он выдает ту же ошибку.отправная точка, но, похоже, она работает только при непосредственном использовании в представлении.
Спасибо!