为什么CSS不会在包含nil的元素周围渲染?

时间:2014-10-16 16:02:16

标签: html css json ruby-on-rails-3 backbone.js

我遇到的问题是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的框时的样子:

The offending boxes

从%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">
                &nbsp;
              </td>

这是CSS的图像 - 两种方式都是一样的:

Rendered CSS

0 个答案:

没有答案