2013-02-10 5 views
0

У меня есть главная страница, которая отвечает за стиль HTML/CSS, но часть содержимого поступает из частичных. Частичное принимает некоторые локали или параметры, то есть current_user или person, и отображает информацию, если таковая имеется.проверить, является ли Rails частично пустым

Есть ли способ проверить, частично ли что-то сделано? Конечная цель:

<% if my_partial can render something %> 
<div class="css_for_something"> 
    <%= render(partial: 'my_partial', locals: {...}) %> 
<% else %> 
    <div class="css_for_no_info"> 
    <%= render something else %> 
<% end %> 

Я не хочу, чтобы частичные элементы обрабатывали логику стилизации; им просто нужно отображать контент, если таковой имеется. И наоборот, главная страница не должна знать ничего о логике в частичном (ых), например, проверять значения или запрашивать базу данных.

Спасибо

ответ

1

Try хранения значение, сгенерированное render_to_string в переменной:

<% partial_content = render_to_string(partial: 'my_partial', locals: {...}).strip %> 

Тогда вы можете увидеть, если он содержит любое содержание:

<% if partial_content.present? %> 
    <%= partial_content %> 
<% else %> 
    <div class="css_for_no_info"> 
    <%= render something else %> 
    </div> 
<% end %> 
+2

Не 'render_to_string'? –

+0

@RyanBigg Это было бы намного лучше. Ред. Благодаря! –

0

К сожалению, решение Криса Питера не работал для меня на рельсах 4.2.4, так как render_to_string, кажется, не доступен во взглядах.

Однако следующие работы (рельсы 4.2.4):

<% partial_content = render partial: 'my_partial' %> 
<% if partial_content.present? %> 
    <%= partial_content %> 
<% else %> 
    <%# rendered if partial is empty %> 
<% end %> 

Имейте в виду, что present? проверка действительно только проверяет, является ли то, что было вынесено пусто. Если что-то, например. HTML-комментарий, возвращается, возвращает false.

Смежные вопросы