2012-01-20 101 views
2

我剛剛在我的Rails 3.1應用程序中實現了ActiveAdmin gem,它導致了我的應用程序中出現了一些問題,它允許ajax發表評論。刪除active_admin.js文件會導致問題消失。如何保留active_admin的javascript,同時保留我的應用程序的功能?任何想法可能是什麼問題?ActiveAdmin with Rails 3.1破解javascript

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

回答

5

我不知道這是否會幫助你...我還使用active_admin的javascript與active_admin應用程序分開。點擊「ajax鏈接」時,我遇到了雙重請求的問題。問題是由vendor.js文件中的觸發器引起的。這已經與最新版本的gem(vendor.js已被刪除)和正確的包含語句在我的application.js文件中修復。

我建議你用明確的require語句替換//=require_tree .。一個一個嘗試添加你的代碼,直到你發現問題。

此外,請向我們提供您正在使用的ActiveAdmin版本。

+0

當我替換'\\ = require_tree。'時。與我個人的js文件的個別需求語句,不包括active_admin.js文件,它解決了這個問題。 – John

1

問題是ActiveAdmin包含它自己版本的jQuery,它會覆蓋你的版本。如果你已經爲jQuery添加了插件,它們將會消失。

幸運的是,有一個簡單的解決方法 - 不要明確包含任何用於ActiveAdmin的JavaScript。你不需要。 Active Admin知道要從ActiveAdmin gem中提取它所需的javascript。所以只需刪除那些需要的行,你應該沒問題。

+0

Thx,它像一個魅力。 –

0

當你刪除需要active_admin.js線,不是刪除或更新索引鏈接(default_actions)不工作,所以讓這條線是和:

更換//= require_tree .有確切的JS文件在您的資產一個一個。這終於解決了我的問題!

希望它能爲別人節省一些時間。 Regards