Как отслеживать информацию по нескольким вызовам для отображения: частичное - PullRequest
2 голосов
/ 05 ноября 2008

Я использую attribute_fu для визуализации красивого блока строк для конкретной таблицы.

<%= f.render_associated_form(@foo.bars, :new => 5) %>

Я бы хотел, чтобы частичное bar имело некоторое представление о состоянии. (Поскольку это понятие относится только к представлению, я не хочу выводить его на саму модель Bar и вычислять его в контроллере.) Для простоты представьте, что это индекс bar в * 1007. * список.

(Мне известно, что в этом случае я мог бы использовать: collection => @ foo.bars для включения bar_counter ... это не работает в моих тестах, но я видел документы для этого.)

Мой вопрос - как передать переменную в частичную, чтобы я мог сохранять и редактировать состояние? Наивно я предполагал, что занимаюсь чем-то вроде

<% @tmp = {:index => 1} %>
%= f.render_associated_form(@foo.bars, :new => 5, :locals => {:tmp => @tmp}) %>

#goes in the view
<%= tmp[:index] += 1 %>

будет работать. tmp передается соответствующим образом, но вызов [] выдает «О, вы только что вызвали метод для nil». Удивительно для меня, я могу сделать tmp.inspect, tmp.class и т. Д., Чтобы посмотреть на Hash, и у них есть ожидаемые результаты. Но tmp [: index] или tmp [: everything_I_want] вызывают его взрыв.

Создание tmp массива дало аналогичные результаты.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 07 ноября 2008

В итоге я решил это полностью в Rails-стиле: патчирование: attribute_fu для удовлетворения моих потребностей. Надеюсь, я скоро смогу выпустить свои патчи для сообщества.

0 голосов
/ 10 ноября 2008

Поведение, которое вы описали выше, похоже, должно быть ошибкой в ​​attribute_fu, так как локальное не передается должным образом, что определенно должно быть. Мне было бы интересно узнать, что вы сделали, чтобы исправить это.

...