2010-10-08 22 views
17

Output mong muốn:Rails 3 - Xây dựng một Bảng, muốn màu sắc thay thế mỗi hàng

<ul> 
<li class="odd">stuff</li> 
<li class="even">stuff</li> 
<li class="odd">stuff</li> 
<li class="even">stuff</li> 
<li class="odd">stuff</li> 
<li class="even">stuff</li> 
<li class="odd">stuff</li> 
<li class="even">stuff</li> 
</ul> 

CSS:

.odd {color:blue} 
.even{color:red;} 

Trong ray 3 là có một cách sạch để làm điều này mà không cần quầy vv?

nhờ

+1

Nếu bạn muốn thực hiện bằng Rails, hãy nghe Raphomet. – John

Trả lời

37

The Way Rails để làm điều này là sử dụng cycle.

<li class="<%= cycle('even', 'odd') -%>">stuff</li> 

Documentation

+3

Nó làm việc cho tôi. Dấu gạch ngang cho là gì? '-%>' –

+0

@BSeven '-%>' ngăn chặn dòng mới, mà bạn chắc chắn sẽ không muốn trong trường hợp này. Tôi không nghĩ rằng 'chu kỳ' sẽ bao giờ thêm một dòng mới vì vậy tôi cho rằng thói quen của tác giả là luôn luôn sử dụng nó (vì an toàn) mặc dù có lẽ Raphomet có thể làm rõ. –

4

Tôi tìm thấy một câu trả lời here mà làm việc cho tôi, đây fleshed ra một chút. Đã thử nghiệm để làm việc với Rails 3.2.8.

Các something.html.erb file:

<table> 
    <tr> 
    <th>foo</th> 
    <th>bar</th> 
    </tr> 
    <% @something.each do |s| -%> 
    <tr class="<%= cycle('oddrow', 'evenrow') -%>"> 
     <td> ... </td> 
     <td> ... </td> 
    </tr> 
    <% end %> 
</table> 

Các something.css.scss file: phương pháp TextHelper

table tr.oddrow { 
    background-color: #111111; 
} 

table tr.evenrow { 
    background-color: #333333; 
} 
1

Rails': cycle.

<li class="<%= cycle('odd','even') -%>">stuff</li> 

Lưu ý: 'lẻ' nên đến trước khi 'thậm chí' (không được liệt kê ở trên) hoặc thiết kế của bạn có thể không được hạnh phúc mà các background-color bắt đầu đã không đi như cô có kế hoạch.

Các vấn đề liên quan