来自haml block rails的额外的,不需要的字段部分

时间:2011-05-25 23:45:31

标签: ruby-on-rails ruby haml

我正在以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)

我仍然想知道它为什么这么做......

2 个答案:

答案 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)