Rails[Cocoon]: добавление ссылки сохраняется, несмотря на удаленное поле?

Я использую Rails 4, используя последний драгоценный камень Cocoon. Все работает отлично; моя единственная проблема заключается в том, что когда я удаляю вложенные поля, ссылка добавления сохраняется. Как и в README, ссылка для добавления находится в _form, а ссылка для удаления — в _[model]_fields. Я использую SimpleForm:

_form.html.erb

<%= simple_form_for(@group) do |f| %>
  <%= f.input :name, :label_html => { class: "col-md-2" }, :input_html => { class: "col-md-10" } %>
  <div id="group_names">
    <%= f.simple_fields_for :group_names do |subgroup| %>
      <%= render 'group_name_fields', :f => subgroup %>
      <div class="links">
        <%= link_to_add_association 'add', f, :group_names %>
      </div>
    <% end %>
  </div>
<% end %>

_group_names_fields.html.erb

<div class="nested-fields">
  <%= f.input :subgroup, :label_html => { class: "col-md-2" }, :input_html => { class: "col-md-10" }, :required => false %>
  <%= link_to_remove_association "remove", f %>
</div>

Что я упустил? Примечание. Я не пропускаю кнопку отправки, отправка работает так же, как и удаление. Просто ссылка добавить не уходит. Для чего-то такого простого я уверен, что просто сделал что-то не так, но я не могу этого заметить. В противном случае я думаю о том, чтобы обернуть ссылку добавления в оператор if, но я не уверен, что это может быть за условие.

Спасибо!


person Kei    schedule 10.07.2015    source источник


Ответы (1)


Ответ: <%= link_to_add_association 'add', f, :group_names %> должен быть вне цикла <%= f.simple_fields_for :group_names do |subgroup| %> . Также решил мою новую текущую проблему, так что бонус!

Это код, указанный в README кокона в haml:

= simple_form_for @project do |f|
  = f.input :name
  = f.input :description
  %h3 Tasks
  #tasks
    = f.simple_fields_for :tasks do |task|
      = render 'task_fields', :f => task
    .links
      = link_to_add_association 'add task', f, :tasks
  = f.submit

Я не знаю haml, поэтому я не знаю, является ли это просто haml, но .links на самом деле не находится в цикле f.simple_fields_for в конце концов.

person Kei    schedule 13.07.2015
comment
Да, это хамл вещь. Haml не так сложен, имхо это довольно очевидно, он больше похож на код, и отступы имеют значение. То же отступ - тот же уровень. Документацию по haml легко найти, но у нас также есть примеры ERB в вики для упоротых. - person nathanvda; 15.07.2015
comment
теперь, когда я смотрю на это, кажется, что это должно было быть очевидно... спасибо! - person Kei; 16.07.2015