ActiveAdmin с Rails 3.1 ломая JavaScript - PullRequest
2 голосов
/ 20 января 2012

Я только что реализовал гем ActiveAdmin с моим приложением на Rails 3.1, и это вызвало проблему с некоторым javascript, который есть в моем приложении, который позволяет ajax публиковать комментарии. Удаление файла active_admin.js приводит к устранению проблемы. Как мне сохранить javascript active_admin при сохранении функциональности моего приложения? Любые идеи о том, какие проблемы могут быть?

Содержимое active_admin.js:

//= require active_admin/base

Содержимое моего файла application.js:

//= require jquery
//= require jquery_ujs
//= require_tree .

Javascript, который нарушается ActiveAdmin:

jQuery -> 
$('.addcomment').live("click", ->
 $(this).closest('.comment_area').find('.add_comment_box').parent().removeClass("add_comments_box_hidden").addClass('add_comments_box')
    return false )

init_csrf = ->
  window._settings.token = $('meta[name="csrf-token"]').attr 'content'
  $.ajaxSetup
    beforeSend: (xhr) ->
      xhr.setRequestHeader "X-CSRF-Token", _settings.token

jQuery ->
    $('.post_comment_btn').live("click", ->
        $(this).closest('.comment_area').addClass('add_comment_here')
        $.post(
            '/comments'
            $(this).closest('form').serialize()
            null
            "script"
        )
        return false )

Ссылка на active_admin github page .

Ответы [ 3 ]

6 голосов
/ 20 января 2012

Не знаю, поможет ли это вам ... Я также использую javascript active_admin отдельно от приложения active_admin. Я столкнулся с проблемой двойных запросов при нажатии на «ссылки ajax». Проблема была вызвана триггерами в файле vendor.js. Это было исправлено с помощью последней версии гема (vendor.js был удален) и соответствующих операторов включения в моем файле application.js.

Я бы предложил вам заменить //=require_tree . на явно выраженные требования. Попробуйте один за другим добавить свои deps, пока не найдете проблему.

Кроме того, предоставьте нам версию ActiveAdmin, которую вы используете.

1 голос
/ 11 апреля 2012

Проблема в том, что ActiveAdmin включает собственную версию jQuery, которая переопределяет вашу версию.Если вы добавили какие-либо плагины в jQuery, они исчезнут.

К счастью, есть простое решение - не включайте явно JavaScript для ActiveAdmin.Вам не нужно.Активный администратор знает, как извлечь нужный ему JavaScript из гема ActiveAdmin.Так что просто удалите нужную строку и все будет в порядке.

0 голосов
/ 03 октября 2012

Когда вы удаляете обязательную строку в active_admin.js, ссылка для удаления или обновления (default_actions) в индексе не работает, поэтому пусть эта строка будет и:

Заменить //= require_tree . точными js-файлами вваши активы по одному.Это наконец решило мою проблему!

Надеюсь, это сэкономит кому-то время.Привет

...