我遇到的问题是CSS在HAML,Backbone-text-injection和一些Rails JSON渲染的组合中无法正常工作。
违规代码在这里:
%td{:class => 'zone_a'}
= start_time(z.zone, 'A')
start_time就是:
def start_time(zone, letter)
if zone
program = zone.programs.where(:identifier => letter).first
if program
program_zone = ProgramZone.where(:program_id => program.id, :zone_id => zone.id).first
if program_zone.run_time.to_i > 946684800
return program_zone.run_time.strftime("%H:%M")
else
return nil
end
else
return nil
end
else
return nil
end
end
返回的nil在页面中呈现。
让我们看一下当我们有一个带有值的框然后有三个带有nil的框时的样子:
从%tr.inspection_zone元素调用的顶部和底部黑色边框,应该影响整行中的所有%td元素,这里没有效果。
所以这是一个问题 - 一个合法的问题。
我通过放入一个不间断的空间来解决这个问题:
%td{:class => 'zone_a'}
= " ".html_safe + start_time(z.zone, 'A')
我正在寻找的不是解决方法,而是CSS不会影响具有nil text / html值的元素的原因。由于这个原因,可能有一个比我做的更好的解决方案。我觉得我的方法只是用管道缠绕破坏的管道。
编辑:
添加呈现的HTML:
没有
<td class="zone_b"></td>
使用
<td class="zone_b">
</td>
这是CSS的图像 - 两种方式都是一样的: