2017-01-08 5 views
0

У меня есть таблица имен. Я хочу отобразить в таблице, если таблица пуста. Я использую Haml, BS4, и рельсы 4. До сих пор я попытался это:Как отображать None в таблице, если таблица пустая.

- if 
    %table.table.table-hover 
    - @bill.cosponsors == blank? do 
     %tr 
      %td= "None" 
- else 
    %table.table.table-hover 
     - @bill.cosponsors.each do |cosponsor| 
      %tr 
      %td= cosponsor.cosponsor 
+0

Не используйте '% td =" None "', используйте '% td None'. – meagar

+0

Уже пробовал, что без успеха – Taylor

+0

Ну, это правильный способ использовать Haml, так что вы должны вернуться к его попытке. То, что вы сейчас делаете, неверно. Вы не должны использовать '=" ... "' для вывода статической строки. – meagar

ответ

1

Вы должны использовать render @collection, чтобы сделать правильную парциальное для каждого элемента в коллекции, а не вручную итерации по коллекции.

Это приведет к возврату nil, если коллекция пуста, что позволяет условно визуализировать различные пустые частичные в этом случае.

Если ваша модель названа 'Коспонсор', вы должны сделать это:

  • приложение/просмотров/соучредители/index.html.haml

    %table 
        = render(@bill.cosponsors) || render('empty_table') 
    
  • приложение/просмотров/соучредители/_cosponsor.html.haml

    %tr 
        %td= cosponsor.cosponsor 
    
  • приложение/просмотров/соучредители/_empty_table_partial.html.haml

    %tr.empty 
        %td There are no cosponsors 
    

См Rendering Collections в Rails Guides.

1

Я использую .any? метод. Если @ bill.consponsors.any? затем отобразите их еще, отобразите «нет»

0

blank? должен быть проверен на самом атрибуте. Вы можете выйти из если таблицы тегов для СУХИХ вашего кода немного:

%table.table.table-hover 
    - if @bill.cosponsors.blank? 
     %tr 
      %td "None" 
    - else 
    - @bill.cosponsors.each do |cosponsor| 
     %tr 
      %td= cosponsor.cosponsor 
+0

Когда я использую if else, я получаю сообщение об ошибке «синтаксическая ошибка, неожиданное keyword_else, ожидающее ключевое слово_енд». Я дважды проверил свое пространство и отступы, и это, похоже, не проблема. Есть идеи? – Taylor

+0

Я не эксперт HAML, но я копирую/вставляю код, и я думаю, вам нужно удалить ключевое слово 'do' в выражении if. Попробуй это –

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

  • Нет связанных вопросов^_^