我已经在我的Rails 4.1应用程序中添加了一些自定义CSS和JS文件。应用程序布局页面包含导航栏,左侧导航菜单和产量空间的代码。 JS和CSS文件在文件中被正确提及,并且所有这些文件都被添加到application.rb中的预编译中。
<script src="assets/jquery.min.js"></script>
<!-- Bootstrap -->
<script src="assets/bootstrap.js"></script>
<!-- App -->
<script src="assets/app.js"></script>
<script src="assets/app.plugin.js"></script>
<script src="assets/jquery.slimscroll.min.js"></script>
现在,这种布局适用于索引页面。但是,当我进入节目,新的和编辑页面时,布局就会崩溃。资产目录中的CSS或JS文件无法识别。
在终端中,我注意到当我点击链接时,例如http://localhost:3000/groups/1
,我看到“ActionController::RoutingError (No route matches [GET] "/groups/assets/app.js")
和ActionController::RoutingError (No route matches [GET] "/groups/assets/bootstrap.css")
等错误。
基本上,应用程序布局中提到的所有文件都无法识别,并且存在路由错误。所有对象都会发生同样的事情。我检查了一些SO解决方案,所有控制器都继承自ApplicationController。
有人能告诉我什么是错的吗?为什么应用会在每个对象的资产中寻找资产而不是全局位置?
PS:我不确定在这里粘贴哪些代码会帮助解决这个问题。如果您需要查看特定页面,请与我们联系。
答案 0 :(得分:2)
您使用的是相对网址assets/...
,因此当您在index
访问/groups
页时,可以从/groups/assets/...
下载资源。
您可以使用绝对路径:/assets/groups/...
如果为索引页面正确下载了资源,则现在可以正确下载所有页面的资源。
然而,正如@fivedigit所提到的,你应该真正使用Rails资产助手。这将在开发模式和在生产模式下编译资产时设置正确的URL。
答案 1 :(得分:1)
Rails有视图帮助程序来正确引用您的CSS和JavaScript资产。目前,资产路径并不总是引用根目录(因为它没有前缀/
),这会给您带来问题。
在布局中使用这样的帮助器:
<%= stylesheet_link_tag 'application' %>
<%= javascript_include_tag 'application' %>
Read more about the Asset Pipeline in the Rails documentation