Model#id在haml视图中返回#object_id

时间:2011-10-25 10:40:35

标签: ruby-on-rails activerecord decorator

我的haml视图中有一个奇怪的错误。当我要求model.id时,它会返回object_id,但仅限于某些地方。例如:

%ul
  - @items.each do |item|
    %li{:class => "item", :id => "item_#{item.id}"}= link_to(item.name,item)

上面的代码呈现了这个:

<ul>
  <li class="item" id="item_104589"><a href="/items/1">Test1</a></li>
  <li class="item" id="item_104590"><a href="/items/2">Test2</a></li>
</ul>

我说这是一个奇怪的错误,因为它只发生在生产环境中并且链接是正确的。 项目数组使用Drapper gem“装饰”。因为这个原因,我没有使用简短形式的haml:

%li[item]

渲染:

<li class="item_decorator" id="item_decorator_xxx">...</li>

1 个答案:

答案 0 :(得分:0)

感谢Leonid,我发现了ItemDecorator的问题。

ItemDecorator覆盖了班级id中的方法Item

item = ItemDecorator.decorate(item)
=> #<ItemDecorator:0xcdbcc78 @context={}, ...
irb(main):004:0> item.id
(irb):4: warning: Object#id will be deprecated; use Object#object_id
=> 107865660

我想知道它是否是Drapper的错误。