问题描述
|
我正在以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)