Rails 3.2.13 - 没有路线匹配 [GET] "/js/jquery.fancybox.js"

Posted

技术标签:

【中文标题】Rails 3.2.13 - 没有路线匹配 [GET] "/js/jquery.fancybox.js"【英文标题】:Rails 3.2.13 - No route matches [GET] "/js/jquery.fancybox.js" 【发布时间】:2014-07-02 11:39:04 【问题描述】:

我被分配了将新设计集成到旧应用程序中的任务,该应用程序是基于 3.2.8 构建的,我升级到了 3.2.13。令我困惑的是js部分,我已经通过搜索SO做了我能做的一切,反之亦然,但没有运气。已经查看this和this one但不知何故js没有被提供。以下是部分可能有用的代码 -

app/views/layouts/application.html.erb:

  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
  <%= javascript_include_tag "html5shiv.js" %>
  <%= javascript_include_tag "fancybox.js" %>

app/views/home/index.html.erb

  <script type="text/javascript" src="/javascripts/html5shiv.js"></script>
  <script type="text/javascript" src="/javascripts/fancybox.js"></script>

我得到的错误:

  Started GET "/js/jquery.fancybox.js" for 127.0.0.1 at 2014-05-14 17:17:33 +0530

ActionController::RoutingError (No route matches [GET] "/js/jquery.fancybox.js"):

更新错误 -

Started GET "/assets/html5shiv.js" for 127.0.0.1 at 2014-05-14 17:17:33 +0530
Served asset /html5shiv.js - 304 Not Modified (0ms)
[2014-05-14 17:17:33] WARN  Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true

欢迎任何建议或指点。更多细节将在询问时提供。提前谢谢,希望得到解决:)

【问题讨论】:

为什么在两个地方包含fancybox.js?。以上两个文件不会模拟错误No route matches [GET] /js/jquery.fancybox.js,因为错误信息中指定的路径和这些文件中指定的路径不同。 您在标题中出现的错误与我们看到的您发布的代码不符。你能复制并粘贴你得到的确切错误吗? 上述代码不包含jquery.fancybox.js 文件。检查错误日志,它会显示文件名和行号。 更新错误 【参考方案1】:

首先,我不确定您为什么要包含脚本两次,但我建议您不要这样做。其次,您是否使用资产管道?如果您是(我强烈建议您这样做),只需将以下内容添加到您的 application.js 文件中:

//= require html5shiv
//= require fancybox

并且正确的文件应该包含在您的连接的 javascript 文件中。

此外,您收到的错误似乎与您发布的代码无关(因为您没有指定指向 /js 下的资产的链接),但我相信当您尝试链接到脚本时住在/javascripts(而不是assets/javascripts),您可能会遇到与您发布的一样的路由错误。

因此,删除对脚本的引用,只需将它们添加到清单 (application.js) 就可以了。

【讨论】:

所以您已将我列出的两行添加到您的清单文件中,并删除了对代码其他部分中脚本的引用?如果是这样,那么你能看到/js/jquery.fancybox.js 是从哪里调用的吗?您的脚本之一是否引用了它,也许?尝试在整个项目中搜索此文件的引用。 /js和/assets/javascripts不是同一个地方吗? @Kumardev 我不确定 Rails /assets/javascripts/ 是 not i> 与/js 相同。关于您的新错误:您是否已将 html5shiv 作为 gem 安装,或者您的 assets/javascripts 文件夹中有 html5shiv.js 文件? 我将它作为 html5shiv.js 在 javascripts 文件夹中,我确实尝试安装了 fancybox gem,但错误仍然存​​在。 所以现在您的application.js? 文件中只有对您的javascript 文件的引用,对吗?

以上是关于Rails 3.2.13 - 没有路线匹配 [GET] "/js/jquery.fancybox.js"的主要内容,如果未能解决你的问题,请参考以下文章

Rails 中没有路线匹配重复错误。如何调试?

带有设计的 Rails 3:没有路线匹配 /d/users/sign_out

没有路线匹配 [GET] "/users/sign_out" rails 5

没有路线匹配 [GET] /assets

没有路线匹配 [GET] "/users/sign_out" **Rails 5/Bootstrap 4**

Rails 3.0.9 + Devise + Cucumber + Capybara 臭名昭著的“没有路线匹配 /users/sign_out”