相关疑难解决方法(0)

Rails 4:未在生产中加载的资产

我正在尝试将我的应用程序投入生产,图像和css资产路径无法正常工作.

这是我目前正在做的事情:

  • 图片资产位于/app/assets/images/image.jpg中
  • 样式表位于/app/assets/stylesheets/style.css中
  • 在我的布局中,我像这样引用css文件: <%= stylesheet_link_tag "styles", media: "all", "data-turbolinks-track" => true %>
  • 在重新启动独角兽之前,我运行RAILS_ENV=production bundle exec rake assets:precompile并且它成功了,我在public/assets目录中看到了指纹文件.

当我浏览到我的网站时,我收到404找不到错误mysite.com/stylesheets/styles.css.

我究竟做错了什么?

更新: 在我的布局中,它看起来像这样:

<%= stylesheet_link_tag    "bootstrap.min", media: "all", "data-turbolinks-track" => true %>
<%= stylesheet_link_tag    "styles", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
Run Code Online (Sandbox Code Playgroud)

生成源是这样的:

<link data-turbolinks-track="true" href="/stylesheets/bootstrap.min.css" media="all" rel="stylesheet" />
<link data-turbolinks-track="true" href="/stylesheets/styles.css" media="all" rel="stylesheet" />
<script data-turbolinks-track="true" src="/assets/application-0c647c942c6eff10ad92f1f2b0c64efe.js"></script>
Run Code Online (Sandbox Code Playgroud)

看起来Rails没有正确地查找已编译的css文件.但是为什么它适用于javascripts(注意/assets/****.js路径)是非常令人困惑的.

ruby ruby-on-rails asset-pipeline ruby-on-rails-4

116
推荐指数
6
解决办法
11万
查看次数

为什么stylesheet_link_tag没有链接到生产中的/ assets?

我刚刚为新的Rails 3.1应用程序进行了第一次部署,但资产似乎无法正常工作.我在部署时预编译了所有内容,它会public/assets像预期的那样出现.但是,例如stylesheet_link_tag "application"在我的布局中的输出有一个href指向/stylesheets/application.css.这显然不起作用.

奇怪的是,在开发模式下,一切似乎都很好,它/assets/application.css与预期相似.

我将我config/application.rbconfig/environments/production.rb文件与我们在资产管道上的另一个应用程序进行了比较,相关设置似乎是相同的.

我应该在哪里看?

ruby-on-rails sprockets asset-pipeline

13
推荐指数
2
解决办法
1万
查看次数

Rails 3.1资产在生产中没有指纹

刚刚开始适应rails 3.1,我开始编写coffeescript和sass,一切都在开发中运行良好.当我在生产中运行服务器时,我只得到:

  <link href="/stylesheets/application.css" media="screen" rel="stylesheet" type="text/css" />
  <script src="/javascripts/application.js" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

在页面的源代码中,没有生成哈希码,并且两个资产都有路由错误:

Routing Error
No route matches [GET] "/stylesheets/application.css"
Run Code Online (Sandbox Code Playgroud)

这是什么原因?我忘记做某事吗?

环境/ production.rb中的设置:

# Settings specified here will take precedence over those in config/application.rb

  # Code is not reloaded between requests
  config.cache_classes = true

  # Full error reports are disabled and caching is turned on
  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true

  # Disable Rails's static asset server (Apache or nginx will already do this)
  config.serve_static_assets = false

  # Compress JavaScripts and …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails-3.1 asset-pipeline

9
推荐指数
1
解决办法
3674
查看次数