Я перемещаю Веб-сайт от направляющих 2 (последний) к направляющим 3 (beta2).
Тестирование с Ruby 1.9.1p378 и Ruby 1.9.2dev (05.04.2010 соединительных линий 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>
Теперь время для ключевой роли!
В любом представлении я хочу создать a content_for
блок (дополнительно). Это может содержать пайсу HTML и т.д. пример ниже. Если этот блок установлен, пайса, HTML внутри должен представить в application.html.erb
.
В противном случае направляющие должны представить Частичное в 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 %>
Таким образом, у Вас есть идея. Надо надеяться. Эта техника работала хорошо в любых направляющих 2.x Приложение.
Теперь, в направляющих 3 (beta2) только yield
Часть работает.
|| render('shared/sidebar')
or
сторона не обработает направляющими или возможно рубином.
Спасибо за вход и время!
Я проверил это, и похоже, что Rails 3 возвращает пустую строку вместо nil. Итак, если они не изменят это до окончательной версии, вам придется изменить свой код, чтобы увидеть, является ли значение пустым, а не просто нулем.
(sidebar = yield(:sidebar)).present? ? sidebar : render("shared/sidebar")