2012-01-03 55 views
4

我有点困惑。在很多关于stackoverflow的问题上,我读到了你需要jquery-ujs来管理你的javascript代码,特别是如果你想要这些销毁链接做工作。如果我在此页面上按照所有安装说明进行操作,我必须说我无事可做。jquery.js和jquery-ujs.js的位置以及为什么销毁链接不起作用

因为我使用的Rails 3.1我必须遵循这样的:

对于Rails的自动安装,使用 “jQuery的轨道” 的宝石。将此放在您的Gemfile:
gem 'jquery-rails', '>= 1.0.12'
并运行:$ bundle install
这一步取决于你的Rails的版本。

a。对于的Rails 3.1,这些行添加到您的应用程序/资产/ Java脚本/ application.js中文件的顶部:

//= require jquery 
//= require jquery_ujs 

的Rails 3.1这是创建一个新的Rails应用程序后,已经完成了。

如果我跑$ rails generate jquery:install我得到以下的输出:

deprecated You are using Rails 3.1 with the asset pipeline enabled, so this generator is not needed. 
      The necessary files are already in your asset pipeline. 
      Just add `//= require jquery` and `//= require jquery_ujs` to your app/assets/javascripts/application.js 
      If you upgraded your app from Rails 3.0 and still have jquery.js, rails.js, or jquery_ujs.js in your javascripts, be sure to remove them. 
      If you do not want the asset pipeline enabled, you may turn it off in application.rb and re-run this generator. 

好了,了无新意。但为什么我的销毁链接仍然无效。所以我问自己问题这些jquery文件位于哪里?当我阅读另​​一个rails版本的jquery安装指令时,他们总是告诉我将这些文件(jquery.js,jquery-ujs.js)复制到特定位置。只有作为Ruby 3.1用户,您不必这样做。但为什么?我找不到这些文件。他们是否是jquery-rails gem的一部分?如果是,为什么我的销毁链接仍然不起作用?这真的是jQuery的问题吗?我的意思是,如果我将帮手从link_to更改为button_to它工作。那么只要它应该成为jQuery的问题,怎么会发生呢?这对我来说可能没有关系,但我不想使用表单按钮。此外,我不能相信像Rails这样的应用程序在其通用生成的模板中包含这样一个大问题。

那么如何解决这个问题,而不需要更改link_to帮手,而不用离开javascript(Railscast)?

更新1

  • 布局文件具有<%= javascript_include_tag "application" %>
  • config.assets.enabled = true设置

更新2

在这里,源对于所提到的破坏链接:

<%= link_to 'Destroy', @post, confirm: 'Are you sure?', method: :delete %> 

通常应该删除帖子,而是浏览器指向该帖子的位置,例如, http://domain/posts/2
如果你运行这个button_to而不是link_to它会工作,但它的表单按钮。

更新3

好吧,销毁环节工作在Firefox,但我是一个谷歌浏览器用户,我希望它的工作有作为。有没有解决方案?

更新4

Chrome检查抛出抛出:DOMException上线5122:var ret = matches.call(node, expr);

message: "SYNTAX_ERR: DOM Exception 12"

但在每一个超链接是否是一个破坏的链接或不出现此错误。
破坏链接抛出一个TypeError ,但我无法弄清楚它是来自jquery.js还是来自内置的chrome扩展。 jquery-ujs.js抛出错误消息是“Are you sure?”。这是由rails为确认消息定义的文本。所以我删除了确认选项,之后删除工作。

如何使确认选项在Chrome中工作?

+0

你的布局中是否有'<%= javscript_include_tag“应用程序”%>“? – 2012-01-03 03:12:25

+0

是的。在源代码中,这里还有两个带有_jquery.js_和_jquery-ujs.js_的

4

jquery.js和jquery_ujs.js由资产管道和jquery-rails gem动态地提供。它们不再存在于Rails 3.1应用程序的磁盘上。

通过请求/assets/jquery.js/assets/jquery_ujs.js与您的浏览器,您可以验证它们是否正确地被服务。确保他们返回JavaScript而不是404/500错误。

+0

这回答了我可以在您的相当长且冗长的帖子中找到的唯一问题。我们不可能告诉你为什么你的销毁链接不起作用,因为你实际上没有说什么比“他们不工作”更多。点击它们会发生什么?你有任何的JavaScript错误?你有任何服务器端错误?你的日志说什么?在我们开始帮助您之前,您需要执行大量的调试步骤。 – meagar 2012-01-03 05:27:42

+0

谢谢。我得到了那条路径的文件。知道是一个问题,为什么销毁链接不起作用。我没有进一步解释它,因为在这里stackoverflow已经有很多这些问题。我会编辑我的问题。 – Marc 2012-01-03 05:40:41

+0

正确当然它不在rails应用程序内。但它确实存在于磁盘上。它位于vendor/assets/javascripts中的jquery-rails gem中。这可能有助于了解何时需要跟踪仅指向jquery代码的错误消息。 – 2012-09-05 20:46:26

1

看起来像一个JavaScript错误...您可以:

  • 发布在Heroku上的页面,在这里我们可以看看
  • 移除所有的JavaScript代码,直到它的工作原理,在添加回去,直到它失败

此外,请确保你没有包括jquery.js和jquery-ujs.js两次(就像你在做什么)。你曾经提到你有jquery.js和jquery-ujs.js脚本标记...不这样做。

相反,你的应用程序/资产/ Java脚本/ application.js中应该是这样的:

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

这将增加了jQuery的jquery_ujs,并在您的应用程序/资产/ JavaScript的文件夹中所有的JavaScript。

+0

准确地说,这是在我的应用程序/资产/ javascripts/application.js中,仅此而已。你可以从[github](https://github.com/lunij/wpr)获取它。除了内置的jquery以外,没有任何JavaScript代码。我认为这是Chrome和JQuery之间的问题。但是请自己尝试一下。 – Marc 2012-01-04 11:11:45

+0

@lunij下载代码和调试是我向人们收费的...如果您将代码放在heroku上,并给出一个链接,我可以在不花费大量时间的情况下看到javascript,我会这样做。 – 2012-01-04 14:38:09

+0

是的,你说得对。我会把它放在heroku上。对不起! – Marc 2012-01-04 16:45:14

0

几周前,我刚刚停用了所有Chrome扩展程序,重新启动了Chrome并且一切正常。我不知道我在创建此问题时使用了哪些Chrome扩展程序。我唯一知道的是,有一个扩展扩展并破坏了JavaScript代码。这就是Chrome Inspector查看所有这些奇怪错误消息的原因。我不知道它的具体扩展名是什么,但它必须是广受欢迎的广告拦截或弹出窗口阻止扩展之一。只需停用所有Chrome扩展程序,并确定您的代码现在是否可以正常运行。

相关问题