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 3:没有路线匹配 /d/users/sign_out
没有路线匹配 [GET] "/users/sign_out" rails 5
没有路线匹配 [GET] "/users/sign_out" **Rails 5/Bootstrap 4**
Rails 3.0.9 + Devise + Cucumber + Capybara 臭名昭著的“没有路线匹配 /users/sign_out”