Bootstrap警告框无法关闭,在Rails 3.2中。

9

使用Twitter Bootstrap 2.0与Rails 3.2(CSS文件在assets/stylesheets中,目前不使用less或sass)

我在屏幕顶部添加了一个基于Bootstrap样式的错误或成功提示框(根据消息的第一个单词是否为“Error”)。我已将'bootstrap.js'和'bootstrap-alert.js'添加到assets/javascript文件夹中。

这是我的布局代码:

<% flash.each do |name, msg| %>
  <% if msg[0..4] == "Error" %>
    <div class="alert alert-error fade in">
  <% else %>
    <div class="alert alert-success fade in">
  <% end %>
  <a class="close" data-dismiss="alert" href="#">&times;</a>
  <%= msg %>
<% end %>

在我的 assets/javascripts/application.js 文件中,我有以下内容:

$(".alert-message").alert()
$(".alert-message").alert('close')

不确定我需要两个类吗?我试过使用.alert / .alert-error。

当我点击关闭符号时没有任何反应,我确定我错过了一些非常明显的东西,但我是新手使用JS /w Rails,无法解决这个问题。 在Chrome JS控制台中,我看到这个错误消息,似乎是关于bootstrap-alert.js data-api:

Uncaught TypeError: Object [object Object] has no method 'on'

非常感谢任何提示!


在点击提交按钮后的几秒钟内,您意识到了问题所在...问题是由于'jquery.js'和'jquiery-ui.js'也在javascripts文件夹中,导致名称/类冲突。删除jquiery文件后,js错误在加载页面时消失,现在警报解除正常工作...d'oh - bobomoreno
3个回答

16

我曾经遇到过同样的问题,看了你的回答bobomoreno,但是它没有起作用。后来我发现最新版本的Bootstrap需要jQuery 1.7.x,而且不能与旧版本的jQuery一起使用。


2
谢谢!这节省了我大量的麻烦和时间:D - rjha94
1
我更新了我的Gemfile文件,指定了gem jquery-rails ~> '2.0'(它会获取jQ 1.7.x),但仍然无法触发关闭事件。 :-( - Tom Harrison
我对Rails一无所知,但是你是否也更新了客户端引用以指向新的jQuery版本? - Dofs
同意。将1.6.4.min替换为1.7.2.min解决了我的问题。 - theTuxRacer

6

我遇到了相同的问题 - 警告解除对我无效。解决方案与bobomoreno的类似,但不完全相同。我有一个文件app/assets/javascripts/bootstrap.js.coffee,其中包含一些自定义内容,这些内容需要代替bootstrap的javascripts。我通过更改名称为bootstrap-custom.js.coffee来修复它,因此bootstrap的文件被正确地引用。


1
这是我的答案,而且它确实有意义。在jQuery和jQuery版本之间移动是一个转移注意力的问题。 - steakchaser

4

正如评论中所述,该问题似乎是由竞争的Javascript文件引起的。

问题是由于在Javascript文件夹中同时拥有'jquery.js'和'jquery-ui.js'所致,可能存在冲突的名称/类。

在删除jQuery文件后,加载页面时js错误消失,现在alert-dismissal可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接