เพียงเพื่อช่วยนักพัฒนาคนอื่น ๆ เพราะไม่มีคำถามที่คล้ายกันใน SO
div class=(is_active? ? 'active' : 'inactive')
div class=('active' if is_active?)
เพียงเพื่อช่วยนักพัฒนาคนอื่น ๆ เพราะไม่มีคำถามที่คล้ายกันใน SO
div class=(is_active? ? 'active' : 'inactive')
div class=('active' if is_active?)
คำตอบ:
ดูตัวอย่างด้านล่าง:
div class=(is_active? ? 'active' : 'inactive')
div class=('active' if is_active?)
สามารถใช้แนวทางเดียวกันเพื่อกำหนดค่าไดนามิกให้กับแอตทริบิวต์อื่น ๆ
div.councilor class=(councilor.retired? ? "retired" : "")
สร้าง:div.councilor.retired
ฉันใช้อาร์เรย์ของคลาสและองค์ประกอบศูนย์หากไม่จำเป็นต้องรวมคลาสไว้ในรายการจากนั้นอาร์เรย์ขนาดกะทัดรัดเพื่อลบองค์ประกอบศูนย์และสุดท้ายรวมทั้งหมดเข้าด้วยกัน
div class=(["cday", "col-md-1", day.day == 1 ? "col-md-offset-#{day.cwday-1}" : nil].compact.join(' '))
หากคุณมีเงื่อนไขหลายอย่างที่ฉันกำลังทำอยู่ตอนนี้เช่น
div class=(('foo ' if is_foo?) + ('bar' if is_bar?))
แม้ว่าฉันจะรู้สึกว่ามันเป็นจุดบกพร่องถ้า is_bar? ส่งคืนเท็จและผลลัพธ์ HTML ที่สร้างขึ้นใน
<div class="foo "></div>
(จุดตำหนิคืออักขระว่างหลังfoo
) หากมีใครมีวิธีแก้ปัญหานี้จะดีมาก
String#rstrip
ในกรณีนี้โดยมี 2 เงื่อนไข: div class=((('foo ' if is_foo?) + ('bar' if is_bar?)).rstrip)
. หรือdiv class=([('foo' if is_foo?), ('bar' if is_bar?)].compact.join(' '))
หลายเงื่อนไข