2013-03-06 28 views

Trả lời

116

Xem ví dụ dưới đây:

div class=(is_active? ? 'active' : 'inactive') 
div class=('active' if is_active?) 

Các phương pháp tương tự có thể được sử dụng để gán giá trị động vào các thuộc tính khác.

+2

Bạn sẽ làm điều đó như thế nào trong nhiều điều kiện? –

+0

Xem bên dưới trong phần nhận xét cho câu trả lời của bạn. –

+0

Điều này cũng có thể nối thêm một lớp, chẳng hạn như: 'div.councilor class = (councilor.retired??" Retired ":" ")' generate: 'div.councilor.retired' –

11

Nếu bạn đã nhiều điều kiện tôi đang làm ngay bây giờ cái gì đó như

div class=(('foo ' if is_foo?) + ('bar' if is_bar?)) 

Mặc dù tôi cảm thấy đó là một nhược điểm nếu is_bar? trả về false và kết quả HTML được tạo trong

<div class="foo "></div> 

(nhược điểm là ký tự trống sau foo). Nếu ai đó có một giải pháp cho điều đó sẽ là tuyệt vời.

+6

Thử' String # rstrip' trong trường hợp này với 2 điều kiện: 'div class = (((('foo' nếu is_foo?) + ('bar' nếu is_bar?)). rstrip)'. Hoặc 'div class = ([('foo' nếu is_foo?), ('Bar' nếu is_bar?)]. Compact.join (''))' trong một số điều kiện. –

17

Tôi sử dụng mảng lớp và phần tử nil nếu không cần đưa lớp vào danh sách, sau đó là mảng nhỏ gọn để loại bỏ phần tử nil và cuối cùng kết hợp tất cả lại với nhau.

div class=(["cday", "col-md-1", day.day == 1 ? "col-md-offset-#{day.cwday-1}" : nil].compact.join(' ')) 
Các vấn đề liên quan