来自haml块导轨的额外多余场

问题描述

| 我正在以haml输出集合
#- if @fields.count>0
  .sfields
    #= render :partial=>\"sfields/field\",:collection=>@fields,:as=>:field
    = render @fields
当字段为零时,始终呈现一个幻像字段。当我添加\'if @ fields.count> 0 \'时,则为零,但是没有输出,但是一旦我添加一个字段,我就会渲染两个,一个是我添加的,另一个是幻影字段。 这是我第一次遇到此问题,我不确定输出虚幻字段时该怎么做。我记得看到过类似的东西,但不记得在哪里看到了,搜索也没有找到与之相关的atm。 编辑1: 部分内容
.sfield
  = field.name
    .fielditems
    #- fields.items each do |i|
      #= render :partial=>\"items/item\",:locals=>{:i => i}
      = render field.items
因此,总是有一个额外的领域徘徊。 编辑2 抽象地,我有这个: 显示动作->字段的局部->字段项的局部->字段项选择的局部,将4个不同的位置拖到一页中。 因此,字段是项的集合,而项是选择的集合。即使经过渲染并使更多渲染轨认(例如render @ fields,render field.items等),我仍然拥有该幻影场。我不想用js或其他东西(很糟糕)将其隐藏,因此我需要找到一些解决方案,其中需要进行更多的反复试验和阅读。 它可以工作,但是在幻影领域仍然很丑陋。 编辑3 我向后走了几步,将所有内容都组合到一个模板中,没有局部。还在那儿。我正在做的错误或缺少的基本操作是添加了这个幻影字段,这很烦人。不一定是局部的。 编辑4:已解决 在控制器中优化@fields select以仅选择附加到我正在显示的项目的字段 例如 @fields = @ showing.fields 至 @fields = @ showing.fields(:showing_id => @ showing.id) 我仍然想知道为什么它会那样做...     

解决方法

您的@fields不会是哈希列表吗?   注意:由于出于向后兼容性的考虑,该集合不能是哈希值之一。通常,您也只需将域对象(例如Active Records)保留在其中。 -http://api.rubyonrails.org/classes/ActionView/Partials.html     ,注意编辑4:已解决 在控制器中优化@fields select以仅选择附加到我正在显示的项目的字段 例如 @fields = @ showing.fields 至 @fields = @ showing.fields(:showing_id => @ showing.id)