2016-08-27 6 views
-1

Как скрыть заголовок таблицы, например Remark, с помощью метода, когда в столбце атрибута примечания нет записей?Скрыть заголовок таблицы, если в столбце примечаний нет записей - Rails

index.html.erb:

<table> 
    <% has_remark = collection_has_remark?(@aslani361s) %> 
     <thead> 
      <tr class="tr-head"> 
        <td>Date</td> 
        <td>Description</td> 
        <td>Amount</td> 
        <td>Discount</td> 
        <td>Paid</td> 
        <td>Balance</td> 
        <td>DelnDel</td> 
        <% if has_remark %> 
        <td>Remark</td> 
        <% end %> 
        <td>Hide</td> 
       </tr> 
     </thead> 
</table> 

_aslani361.html.erb:

<% if aslani361.remark.present? -%> 
    <td class="col-1"><%= aslani361.remark %></td> 
<% end %> 

aslani361s_helper.rb:

module Aslani361sHelper 
    def collection_has_remark?(collection) 
     collection.each do |aslani361| 
      if aslani361.remark.present? 
       return true 
      end 
     end 
    end 
end 

screeshot.png

Проблема заключается в том Я не могу скрыть заголовок таблицы , но я могу скрыть записи.

Любые предложения приветствуются.

Заранее спасибо.

+0

Я не знаю, почему вы пытаетесь скрыть 'header'. что, если в некоторых записях есть «примечание», а некоторые нет, это общий случай. Поэтому, учитывая это, пусть заголовок будет там, даже если у вас нет замечания по какой-либо записи, на мой взгляд. Подумайте о перспективах UX, ваш пользователь никогда не поймет, что столбец «примечание» существует до тех пор, пока не появится «примечание», если вы спрячете этот заголовок. – Abhinay

+0

Спасибо за ответ. Я понимаю вашу мысль. В будущем, если мне нужно будет сделать то же самое для чего-нибудь еще, это будет более полезно для меня. –

+0

Эй, я думаю, вы должны просто проверить наличие замечаний на всех записях и сказать, что если ни один из них не удалил его, удалите заголовок. которые вы уже пробовали, но в вашем состоянии есть проблема, вы возвращаете «true» на каждую проверку, вместо этого устанавливаете ее в «истину» и выходите из цикла в тот момент, когда вы найдете замечание, присутствующее в любой записи. – Abhinay

ответ

1

Ваш collection_has_remark? возвратит true если есть aslani361.remark и collection сам, если нет (возвращаемого значения each), оба из которых оценивают как «truthy» значения для условий.

Использование:

def collection_has_remark?(collection) 
    collection.each do |aslani361| 
     if aslani361.remark.present? 
      return true 
     end 
    end 
    return false 
end 

или лучше:

def collection_has_remark?(collection) 
    collection.any?{|aslani361| aslani361.remark.present?} 
end 
+0

Спасибо за ответ. Теперь я могу скрыть столбец «Замечание», но когда некоторые записи присутствуют, он становится несколько искажающим, вы можете видеть на изображении выше. –

+0

@MuhammadYaseen, потому что вы проверяете каждый элемент в поле зрения, но вам нужно проверить коллекцию, и если у какого-либо элемента есть поле - выведите 'td' для всех, пуст для тех, у кого нет поля – Vasfed

+0

Еще раз спасибо. Я получил вашу мысль, но где и что мне нужно изменить код.Пожалуйста, руководство ... –

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