Я перевожу сайт с Rails 2 (последний) на Rails 3 (beta2).
Тестирование с 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.
Теперь в Rails 3 (бета2) работает только yield
Part.
|| render('shared/sidebar')
Сторона or
не будет обрабатываться рельсами или, может быть, рубином.
Спасибо за ввод и время!