События Cocoon link_to_add/remove_association не срабатывают

Я работаю над приложением Rails, в котором есть модель Badge со многими элементами BadgeElements. Я пытаюсь разрешить динамическое добавление и удаление BadgeElements, и, поскольку у меня были проблемы с драгоценным камнем вложенной_формы ryanb, я сейчас смотрю на Cocoon. Я считаю, что установил драгоценный камень правильно, но события не запускаются. Когда я нажимаю на ссылки для добавления или удаления ассоциации, к URL-адресу в верхней части страницы добавляется #, но в остальном ничего не происходит. Вот соответствующий код:

значок.rb:

class Badge < ActiveRecord::Base
  has_one :background, :dependent => :destroy
  has_many :badge_elements, :dependent => :destroy
  accepts_nested_attributes_for :background
  accepts_nested_attributes_for :badge_elements, :allow_destroy => true
  validates :title, presence: true, length:{minimum: 3}
end

_form.html.haml:

= form_for @badge, html:{class:"form-horizontal edit_badge", data:{id:@badge.id}} do |f|
  %table
    %tbody
      .field
        %tr
          %td= f.label :title
          %td= f.text_field :title
      #badge_elements
        = f.fields_for :badge_elements do |badge_element|
          = render 'badge_element_fields', :f => badge_element
        .links
          = link_to_add_association 'Add an element', f, :badge_elements

_badge_element_fields.html.haml:

.nested-fields
  .field
    %tr
      %td
      %td= f.label :side
      %td= f.text_field :side, id: "badge_element_#{f.object.id}_side"
    ...
    ...
   = link_to_remove_association "remove element", f

person Chris L.    schedule 28.07.2014    source источник


Ответы (1)


Кажется, у вас нет необходимого кода javascript. Это может быть связано с рядом причин (вероятно, не исчерпывающих - здесь немного догадок):

  • вы не добавили строку //= require cocoon в application.js
  • вы не включили application.js в макет вашего приложения
  • вы не используете jquery (или не правильно его включили)
  • у вас есть какая-либо другая ошибка в вашем коде javascript, которая останавливает обработку javascript. Вы должны увидеть ошибку в консоли javascript вашего браузера.
person nathanvda    schedule 30.07.2014
comment
Спасибо за ваш ответ. Ни одна из предложенных вами ошибок не относится ко мне. Никаких ошибок js, у меня есть все необходимые включения и т. д. Что-нибудь еще, что вы можете придумать? - person Chris L.; 30.07.2014
comment
Вы должны дать мне немного больше информации. Вы видите код js в своем браузере? Например. он загружен? Вы делали что-то вроде rake assets:compile в своей среде разработки, и, может быть, вы все еще используете старый js? - person nathanvda; 31.07.2014
comment
Все в порядке, вместо этого я использовал запросы AJAX. Спасибо за помощь. - person Chris L.; 31.07.2014
comment
То есть вы не смогли использовать кокон, но решили его иначе? Иначе я не понимаю, что вы имеете в виду под ajax-запросами? Я рад за вас, что вы решили это. Извините, что не смог вам помочь. Я почти уверен, что это было что-то простое, что было неправильно. - person nathanvda; 01.08.2014