Не показывать div, окружающий доходность, если это не называется - PullRequest
1 голос
/ 09 сентября 2011

У меня есть этот фрагмент в макете:

    <div class="yui-g" style="min-width: 760px">    
      <!-- top row -->  
        <%= yield :top_row %>
    </div>

Если ничто не вызывает content_for :top_row, тогда у меня остался пустой прямоугольник с стилизацией на странице.Правильно было бы изменить стиль макета (и всего сайта), но сейчас это не вариант (унаследованный долг и более насущные требования).Есть ли способ обернуть div в некоторый код, который проверяет, действительно ли доходность дает что-то, и не отображать его, если так?

ура, макс.

РЕДАКТИРОВАТЬ - этоrails 2.2.2 project btw.

EDIT 2

@ arnep предложил следующее, что работает:

<% content = yield :top_row %>
<% unless content.blank? %>
  <div class="yui-g" style="min-width: 760px">   
    <%= content %>
  </div>
<% end %>

Что я хотел бы сделать дальше, это обернутьэто в помощнике, который я могу использовать следующим образом:

<% yield_if(:top_row) do |content| %>
  <div class="yui-g" style="min-width: 760px">   
      <%= content %>
  </div>
<% end %>    

Я борюсь с этим помощником, так как он включает в себя уступку в блоке, переданном методу И уступку содержимому в: top_row.Вот то, что я попробовал, но это не работает - он отображает всю страницу в возвращенную строку.Я думаю, что я получил это как-то задом наперед.

Ответы [ 3 ]

3 голосов
/ 09 сентября 2011

Да, есть content_for? помощник только для проверки.

1 голос
/ 09 сентября 2011

Я посмотрел на 2.2.2 content_for и он использует instant_variable_set для этого.Возможно, вы можете использовать instance_variable_defined? для запроса вашего :top_row контента.

Другая идея может состоять в том, чтобы назначить контент переменной <% content = yield(:top_row) %>, а затем использовать content.present? дляобойти пустое div.

0 голосов
/ 09 сентября 2011

Поскольку у вас нет доступа к content_for?, кажется, что единственный способ пройти через это - использовать javascript и удалить div, если он пуст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...