Направляющие 3 - возврат урожая или обратный вызов не назовут в поле зрения <% = урожаем (: боковая панель) || рендеринг ('общая / боковая панель') %>

Я перемещаю Веб-сайт от направляющих 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 сторона не обработает направляющими или возможно рубином.

Спасибо за вход и время!

7
задан Jon Seigel 23 May 2010 в 00:39
поделиться

1 ответ

Я проверил это, и похоже, что Rails 3 возвращает пустую строку вместо nil. Итак, если они не изменят это до окончательной версии, вам придется изменить свой код, чтобы увидеть, является ли значение пустым, а не просто нулем.

(sidebar = yield(:sidebar)).present? ? sidebar : render("shared/sidebar")
3
ответ дан 6 December 2019 в 12:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: