Model # id возвращает #object_id в представлениях haml - PullRequest
2 голосов
/ 25 октября 2011

У меня странная ошибка в моих представлениях хамла. Когда я спрашиваю 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. Я не использую краткую форму хамла из-за этого:

%li[item]

Оказывает:

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

1 Ответ

0 голосов
/ 25 октября 2011

благодаря Леонид , я обнаружил проблему с 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 или нет.

...