在截止日期小于今天的日期时隐藏内容 - rails 4

时间:2015-10-05 14:28:59

标签: css ruby-on-rails ruby-on-rails-4

我是rails的新手,所以非常感谢任何帮助和建议。

  • 如果deadline日期小于今天的日期,我正试图隐藏招聘广告(使用css)。
  • 我的代码无效,因为广告未被隐藏
  • 如果有人可以告诉我,或者有更好的编码方式
  • ,我会非常感激

谢谢

  

views / adverts / index.html.erb

<table>   
 <thead>     
  <tr>   
   <th>Title</th>
   <th>Status</th>              
   <th>Content</th>       
   <th>Deadline</th>       
  </tr>   
 </thead>    
 <tbody>     
  <% @adverts.each do |advert| %>   
   <% if advert.deadline < Date.today %>   
   <div class="hide">    
    <tr>         
     <td><%= advert.title %></td>
     <td><%= “expired” %></td>        
     <td><%= advert.content %></td>      
     <td><%= advert.deadline %></td>        
    </tr> 
   </div >
   <% else %>   
    <div >    
     <tr>         
      <td><%= advert.title %></td>
      <td><%= “active” %></td> 
      <td><%= advert.content %></td>      
      <td><%= advert.deadline %></td>        
     </tr> 
    </div >
   <% end %>   
  <% end %>   
 </tbody> 
</table>
  

application.css

.hide {
 display:none
}

2 个答案:

答案 0 :(得分:1)

不要将 tr 包裹在 div 中,只需将“.hide”类应用于相关的 tr 即可。 Divs不应该被用作桌子中的直接孩子!

<% @adverts.each do |advert| %>   
   <% if advert.deadline < Date.today %>    
    <tr class="hide">         
     <td><%= advert.title %></td>
     <td><%= “expired” %></td>        
     <td><%= advert.content %></td>      
     <td><%= advert.deadline %></td>        
    </tr> 
<% else %>   

答案 1 :(得分:1)

  

供参考:

     

Date.today与Date.current

不同

- &GT;如果没有设置timeZone,Date.current也会返回Date.today       返回当前时区的Today's Date。我们可以通过更改时区来验证这一点。

如果您进行比较,则应始终使用Date.current

这是因为如果您所在的时区可能与UTC不同,并且您的时区未设置,那么您可能会遇到Date.today == Date.tomorrow

的情况

所以更优选

<% if advert.deadline < Date.current %>