我有点困惑。在很多关于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中工作?
你的布局中是否有'<%= javscript_include_tag“应用程序”%>“? – 2012-01-03 03:12:25
是的。在源代码中,这里还有两个带有_jquery.js_和_jquery-ujs.js_的
jquery.js和jquery_ujs.js由资产管道和jquery-rails gem动态地提供。它们不再存在于Rails 3.1应用程序的磁盘上。
通过请求
/assets/jquery.js
和/assets/jquery_ujs.js
与您的浏览器,您可以验证它们是否正确地被服务。确保他们返回JavaScript而不是404/500错误。来源
2012-01-03 05:25:48 meagar
这回答了我可以在您的相当长且冗长的帖子中找到的唯一问题。我们不可能告诉你为什么你的销毁链接不起作用,因为你实际上没有说什么比“他们不工作”更多。点击它们会发生什么?你有任何的JavaScript错误?你有任何服务器端错误?你的日志说什么?在我们开始帮助您之前,您需要执行大量的调试步骤。 – meagar 2012-01-03 05:27:42
谢谢。我得到了那条路径的文件。知道是一个问题,为什么销毁链接不起作用。我没有进一步解释它,因为在这里stackoverflow已经有很多这些问题。我会编辑我的问题。 – Marc 2012-01-03 05:40:41
正确当然它不在rails应用程序内。但它确实存在于磁盘上。它位于vendor/assets/javascripts中的jquery-rails gem中。这可能有助于了解何时需要跟踪仅指向jquery代码的错误消息。 – 2012-09-05 20:46:26
看起来像一个JavaScript错误...您可以:
此外,请确保你没有包括jquery.js和jquery-ujs.js两次(就像你在做什么)。你曾经提到你有jquery.js和jquery-ujs.js脚本标记...不这样做。
相反,你的应用程序/资产/ Java脚本/ application.js中应该是这样的:
这将增加了jQuery的jquery_ujs,并在您的应用程序/资产/ JavaScript的文件夹中所有的JavaScript。
来源
2012-01-04 10:40:28
准确地说,这是在我的应用程序/资产/ javascripts/application.js中,仅此而已。你可以从[github](https://github.com/lunij/wpr)获取它。除了内置的jquery以外,没有任何JavaScript代码。我认为这是Chrome和JQuery之间的问题。但是请自己尝试一下。 – Marc 2012-01-04 11:11:45
@lunij下载代码和调试是我向人们收费的...如果您将代码放在heroku上,并给出一个链接,我可以在不花费大量时间的情况下看到javascript,我会这样做。 – 2012-01-04 14:38:09
是的,你说得对。我会把它放在heroku上。对不起! – Marc 2012-01-04 16:45:14
几周前,我刚刚停用了所有Chrome扩展程序,重新启动了Chrome并且一切正常。我不知道我在创建此问题时使用了哪些Chrome扩展程序。我唯一知道的是,有一个扩展扩展并破坏了JavaScript代码。这就是Chrome Inspector查看所有这些奇怪错误消息的原因。我不知道它的具体扩展名是什么,但它必须是广受欢迎的广告拦截或弹出窗口阻止扩展之一。只需停用所有Chrome扩展程序,并确定您的代码现在是否可以正常运行。
来源
2012-10-24 22:32:52 Marc