如何使用JQuery.noConflict()来修复rails 3.2.12中JQuery和bootstrap之间的冲突?

时间:2013-05-10 23:36:55

标签: ruby-on-rails twitter-bootstrap jquery

$.noConflict()已添加到application.js主应用中的rails 3.2.12,以解决jquerybootstrap之间的冲突。但是它没有按预期工作。这是application.js:

//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_tree .
//= require bootstrap

$.noConflict();

点击新客户表单上的add_more_contact链接时,firebug中出现错误:

ReferenceError: add_fields is not defined

add_fields是application.js中定义的js函数:

function add_fields(link, association, content) {
  var new_id = new Date().getTime();
  var regexp = new RegExp("new_" + association, "g")
  $(link).parent().before(content.replace(regexp, new_id));
}

调用add_fields是通过application_controller.rb中的方法完成的:

def link_to_add_fields(name, f, association)
  new_object = f.object.class.reflect_on_association(association).klass.new
  fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
    render :partial => association.to_s, :locals => {:f => builder, :i_id => 0} 
  end
  link_to_function(name, "add_fields(this, \"#{association}\", \"#{j fields}\")")
end

代码在bootstrap之前正在运行。使用noConflict()有什么问题?我们是否还需要将noConflict()添加到/views/layouts/application.html.erb?谢谢你的帮助。

更新: 以下是新客户页面的标题:

enter image description here

1 个答案:

答案 0 :(得分:1)

jquery和bootsrap之间没有冲突,相反,jquery是bootstrap工作的必要条件。

但是jquery-ui和bootstrap之间存在冲突,http://addyosmani.github.io/jquery-ui-bootstrap/的项目已经缓解了这种冲突。

无论如何,我认为上面的代码应该可以在不调用noConflict的情况下工作。