Использование условных обозначений для отображения элементов представления в Rails - PullRequest
0 голосов
/ 29 ноября 2011

Я использую Ruby on Rails и хочу отобразить раскрывающийся список в представлении, но только если элементы в списке существуют. Какой хороший способ проверить наличие хотя бы одного экземпляра модели и затем отобразить его в представлении на основе этого условия?

Я думал об использовании оператора if, такого как:

if firstmodel.secondmodels

. , HTML материал

Но я думаю, что пустой массив не прекращает вычислять значение false.

Ответы [ 3 ]

3 голосов
/ 29 ноября 2011

Вы можете использовать что-то вроде этого в своем представлении:

<% if @items.any? %>
  <!-- drop down list here -->
<% else %>
  <div>No items :-(</div>
<% end %>

Обычно вы должны стараться не допускать логики в ваше представление, но я думаю, что в этом простом случае не так много альтернатив (?)

Если у вас слишком много if else подобных вашему представлению, ну ... вы можете проверить это в вашем контроллере и отрендерить другое представление, например:

# render no_content.html.erb if there are no items,
# default template file otherwise
render "no_content" unless @items.any?
# or:
render "no_content" if @items.empty?
1 голос
/ 29 ноября 2011

Я считаю, что вам нужно что-то подобное:

<% if firstmodel.secondmodels.empty? %>
  <p>Stuff</p>
<% else %>
  <p>Other Stuff</p>
<% end %>

Если вы используете HAML:

- if firstmodel.secondmodels.empty?
  %p Stuff
- else %>
  %p Other Stuff
1 голос
/ 29 ноября 2011

Используя приведенный выше пример, вы можете увидеть, пустой ли массив, выполнив empty?.

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