частичный рендеринг рельсов с уникальным идентификатором

Я пытаюсь отобразить партиал в представлении, когда пользователь нажимает кнопку, так что на самом деле это список партиалов (один и тот же партиал визуализируется несколько раз).

<%= f.fields_for :features do |s| %>
  <%= render 'feature_fields', f: s %>
<% end %>
<div class="f-input for-button to-right">
  <%= link_to_add_association 'add more', f, :features, :class => "radius blue button" %>
</div>

и в моем частичном у меня есть этот код:

<% div_id = DateTime.now.to_i %>

Таким образом, идея состоит в том, чтобы иметь уникальный идентификатор для каждого обработанного фрагмента, но моя проблема заключается в том, что фрагменты отображаются нормально, но идентификатор тот же, первый сгенерированный идентификатор применяется к каждому частичному


person maki    schedule 11.12.2014    source источник
comment
Вместо этого попробуйте использовать rand(). Он по-прежнему ведет себя так же?   -  person Mohamad    schedule 11.12.2014
comment
нет, это то же самое, первый идентификатор отличается, но остальные одинаковы, я перепробовал множество методов для генерации случайного числа, но оно всегда одно и то же, я думаю, проблема в том, как рельсы отображают этот частичный   -  person maki    schedule 11.12.2014


Ответы (1)


Поскольку вы используете кокон, использование частичного счетчика или любой другой модификации самого частичного вам не поможет.
Это связано с тем, что кокон отображает один шаблон для новых экземпляров и использует его локально в браузере для генерировать новые вложенные блоки атрибутов.

Вы можете использовать обратные вызовы коконов для изменения сгенерированного блока с помощью JS.

См. информацию о коконе.

person Martin M    schedule 11.12.2014
comment
Я попытался использовать link_to_remove_association, который должен решить мою проблему, потому что я использую этот идентификатор для удаления сгенерированных партиалов, но link_to_remove_association не работает, я поместил его в партиал следующим образом ‹%= link_to_remove_association('remove this', f, : class =› радиусная кнопка синяя) %› но когда я нажимаю на нее ничего не происходит, может я неправильно ее использую? - person maki; 11.12.2014
comment
это выглядит нормально. Он должен находиться в ‹div class=nested-fields›, который инкапсулирует весь фрагмент. - person Martin M; 11.12.2014