Rails - 应用程序布局未在show,new和edit页面中呈现

时间:2014-12-14 15:08:04

标签: ruby-on-rails

我已经在我的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:我不确定在这里粘贴哪些代码会帮助解决这个问题。如果您需要查看特定页面,请与我们联系。

2 个答案:

答案 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