Я был вдали от Rails некоторое время, так что, возможно, я пропустил что-то простое.выход, если контент, визуализировать что-то в противном случае (Rails 3)
Как вы можете сделать это:
<%= 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
Но что бросает «нет block given 'error.
Во втором случае:
def yield_or_render(content, template)
content_for?(content) ? yield(content) : render(template)
end
Это работает, когда нет контента определен, но как только я использую content_for переопределить содержимое по умолчанию, он выдает ту же ошибку.
В качестве отправной точки я использовал this, но, похоже, он работает только при непосредственном использовании.
Спасибо!
Похоже, что я буду использовать этот шаблон много, поэтому я хотел извлечь его в помощник. – Ivan