Rails 3 - возвращение yield или обратный вызов не будут вызываться в поле зрения <% = yield (: sidebar) || render ('shared / sidebar')%>
Я перевожу сайт с Rails 2 (последний) на Rails 3 (бета2).
Тестирование сRuby 1.9.1p378 а такжеRuby 1.9.2dev (2010-04-05 багажник 27225)
Застрял в ситуации, я не знаю, какая часть будет работать хорошо. подозрительныйyield
это проблема, но не знаю точно.
В моих файлах макетов я часто использую следующую технику:
app/views/layouts/application.html.erb
:
<%= yield(:sidebar) || render('shared/sidebar') %>
Например, частичное выглядит так:
app/views/shared/_sidebar.html.erb
:
<p>Default sidebar Content. Bla Bla</p>
Теперь пришло время для ключевой части!
В любом случае, я хочу создатьcontent_for
блок (необязательно). Это может содержать кусок HTML и т. Д. Пример ниже. Если этот блок установлен, HTML-код внутри должен отображаться вapplication.html.erb
.
Если нет, то Rails должен отобразить Partial вshared/_sidebar.html.erb
на правой стороне.
app/views/books/index.html.erb
:
<% content_for :sidebar do %>
<strong>You have to read REWORK, a book from 37signals!</strong>
<% end %>
Итак, у вас есть идея. С надеждой. Эта техника хорошо работала в любом приложении Rails 2.x.
Сейчас вРельсы 3 (Бета2) толькоyield
Часть работает.
|| render('shared/sidebar')
or
сторона не будет обрабатываться рельсами или рубином.
Спасибо за вклад и время!