2008-11-04 39 views
7

Tôi đang vẽ một phần đường ray và tôi muốn thay thế màu nền khi nó hiển thị một phần. Tôi biết đó không phải là siêu rõ ràng vì vậy đây là một ví dụ về những gì tôi muốn làm:định dạng có điều kiện trong đường ray partials

Row Một nền xám Row Hai nền vàng Row Ba xám nền Row Bốn nền vàng
  • xin lỗi các đường nối ngăn xếp để ngăn màu nền hiển thị nhưng tôi nghĩ điều này làm cho ý tưởng của tôi rõ ràng

Đây là mã điểm cho rằng tôi đang sử dụng

<table> 
    <%= render :partial => 'row' :collection => @rows %> 
</table> 

vẻ phần _row.html.erb như thế này

<tr bgcolor="#AAAAAA"> 
    <td><%= row.name %></td> 
</tr> 

Vấn đề là tôi không biết làm thế nào để thay đổi nền màu cho mọi hàng khác. Có cách nào để làm việc này không?

Trả lời

18

Bạn có thể sử dụng trình trợ giúp Chu trình. Một cái gì đó như thế này:

<tr class="<%= cycle("even", "odd") %>"> 
    <td><%= row.name %></td> 
</tr> 

Hoặc trong trường hợp bạn sử dụng bgcolor thay vào đó, mặc dù tôi khuyên bạn nên sử dụng các lớp css.

Bạn có thể chuyển qua nhiều hơn hai giá trị: chu kỳ (‘first’, ‘second’, ‘third’, ‘and_more’).

Ngoài ra còn có: reset_cycle (‘cycle_name’) Điều này đảm bảo rằng trên mỗi lần lặp lại, bạn sẽ bắt đầu lại với giá trị đầu tiên của danh sách chu kỳ.

Kiểm tra đường ray documentation để biết thêm ví dụ.

+1

Nếu bạn sử dụng nhiều danh sách hoặc bảng trên một trang, tôi khuyên bạn nên đặt tên cho chu kỳ của mình. Chỉ cần vượt qua: name => 'some_unique_name' vào cuối chu kỳ ('a', 'b', ...) gọi. –

0

Một ý tưởng khác, bạn có thể sử dụng javascript để thay đổi kiểu của phần tử dựa trên (tổng số TD% 2).

Bằng cách đó, tất cả nội dung trực quan của bạn đều được chứa trong lớp html/css/javascript. Sau đó, một lần nữa, kỹ thuật này không hoạt động nếu javascript bị vô hiệu hóa.

0

Có một "dấu hiệu" với chu kỳ: Nếu bạn nên nối thêm vào chuỗi, chu kỳ ngắt. Ví dụ:

cycle('odd', 'even') << " some other classes" 

sẽ phá vỡ chu kỳ. Tuy nhiên, việc đảo ngược thứ tự hoặc xây dựng một chuỗi hoạt động tốt:

"some other classes " << cycle('odd', 'even') 
"#{cycle('odd', 'even')} some other classes" 

Tôi chưa (chưa) đào sâu vào nguồn để xem tại sao điều này có thể xảy ra. Ngoài ra, tôi đang sử dụng Rails 3.2.x

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