我正在以haml
输出一个集合#- if @fields.count>0
.sfields
#= render :partial=>"sfields/field", :collection=>@fields, :as=>:field
= render @fields
当字段为零时,始终会呈现一个幻像字段。当我添加'if @ fields.count> 0'然后当零时没有输出,但是一旦我添加一个字段,我得到两个渲染,我添加的一个和一个幻像字段。
这是我遇到的第一个,我不知道我做了什么,输出幻像字段。我记得看到类似的东西,但不记得我在哪里看到它,而且我的搜索没有任何相关的内容。
编辑1:
部分内容
.sfield
= field.name
.fielditems
#- fields.items each do |i|
#= render :partial=>"items/item", :locals=>{:i => i}
= render field.items
所以,总会有一个额外的sfield。
编辑2
抽象地说,我有这个:
显示操作 - >部分字段 - >部分字段项 - >部分用于字段项目选择,4个不同的地方被拉入一页。
因此,字段是项目的集合,而项目是选择的集合。即使经过并使渲染更多的轨道默认(例如渲染@fields,渲染field.items等),我仍然有幻影场。我不想用js或其他东西隐藏它(可怕的),所以我需要找到一些解决方案,这需要更多的试验和错误以及阅读。
它很有效,但幻影场挂在上面很难看。
编辑3
我已经采取了几个步骤将所有内容合并到一个模板中,没有部分内容。还在那儿。一些基本的我做错了或缺少的是添加这个幻象字段,这很烦人。那不一定是偏僻的。
编辑4:已解决
在控制器中精炼@fields选择,仅选择附加到我正在显示的项目的字段
e.g。
@fields = @ showing.fields
到
@fields = @ showing.fields(:showing_id => @ showing.id)
我仍然想知道它为什么这么做......
答案 0 :(得分:1)
你的@fields不会是哈希列表吗?
注意:由于向后兼容性问题,集合不能是散列之一。通常你也只是保留域名对象,比如Active Records。
- http://api.rubyonrails.org/classes/ActionView/Partials.html
答案 1 :(得分:0)
注意编辑4:已解决
在控制器中精炼@fields选择,仅选择附加到我正在显示的项目的字段
e.g。
@fields = @ showing.fields
到
@fields = @ showing.fields(:showing_id => @ showing.id)