10

好的,所以编译我的资产工作正常,但是当我运行时:

thin start -e production

我的 javascript 或 css 都没有加载。我的浏览器也取消了获取我的资产的请求。我不确定为什么会这样,但我怀疑它是因为它认为它的 404 在它们身上。如果您查看顶部图像,您会看到我的 application.css 文件已编译并存储在我的资产文件夹中,但是当我尝试访问该文件时,我得到了我的 404.html 文件。

是什么赋予了!?

在此处输入图像描述

在此处输入图像描述

编辑:

我被要求发表我的观点。以下是项目中的一些代码:

<% content_for :title, 'Quick Quote' %>
<% content_for :subtotal, get_subtotal %>
<% content_for :stylesheet_includes do %>
  <%= stylesheet_link_tag "quote", "jquery-ui-timepicker-addon" %>
<% end %>
<% if @quote.errors.any? %>
  <div class="flash alert">
  <% @quote.errors.full_messages.each do |msg| %>
    <div><%= msg %></div>
  <% end %>
  </div>
<% end %>
<h1>Quick Quote</h1>

我的布局:

<!DOCTYPE html>
<html>
<head>
  <title><%= (yield(:title) + " - " unless yield(:title).blank?).to_s + "Online Scheduler Order Taker" %></title>
  <%= stylesheet_link_tag    "application", "jquery-ui-timepicker-addon.css", :media => "all" %>
  <%= yield :stylesheet_includes %>
  <%= javascript_include_tag "application" %>
  <%= yield :javascript_includes %>
  <%= csrf_meta_tags %>
</head>
<body>

我的production.rb中的代码

config.assets.precompile += %w( quote.css jquery-ui-timepicker-addon.css prices.css contact.css )

我的 application.css.scss.erb 顶部:

/*
 * This is a manifest file that'll be compiled into application.css, which will include all the files
 * listed below.
 *
 * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
 * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
 *
 * You're free to add application-wide styles to this file and they'll appear at the top of the
 * compiled file, but it's generally better to create a new file per style scope.
 *
 *= require_self
 *
 * require_tree . <- commented out
 * require jquery-ui-timepicker-addon.css <- commented out
 */

我的整个 application.js 文件

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require jquery-ui-timepicker-addon.js
//= require_tree .
4

4 回答 4

10

检查您的config/environments/production.rb文件并添加下一行(如果还没有):

config.serve_static_assets = true
于 2013-04-30T09:46:23.730 回答
10

Rails 建议config.serve_static_assets默认禁用此设置,即设置为 false。config/environments/production.rb这是在 rails app中生成的默认配置

禁用 Rails 的静态资产服务器(Apache 或 nginx 已经这样做了)

config.serve_static_assets = false

因此,如果您将其设置为true本地应用程序,那仍然可以。但是,如果您在 Apache 或 ngix 或除 heroku 之外的任何其他设备上部署您的应用程序,那么不建议config.serve_static_assets=true在您的production.rb配置文件中进行配置。这是 Rails 指南中的文档。

config.serve_static_files 将 Rails 本身配置为提供静态文件。默认为 true,但在生产环境中被关闭,因为用于运行应用程序的服务器软件(例如 NGINX 或 Apache)应该提供静态资产。与默认设置不同,在运行(绝对不推荐!)或使用 WEBrick 在生产模式下测试您的应用程序时将其设置为 true。否则,您将无法使用页面缓存,并且对公共目录下定期存在的文件的请求无论如何都会影响您的 Rails 应用程序。

网址 - http://guides.rubyonrails.org/configuring.html

于 2015-05-12T18:05:43.897 回答
3

你能把这条线放在你当前的 environment.rb 中吗?

config.serve_static_assets=true

参考:这里

于 2013-04-30T09:46:52.330 回答
3

导轨 5:

更改config.public_file_server.enabled为或添加任何值production.rb到环境变量。trueRAILS_SERVE_STATIC_FILES

参考:https ://github.com/rails/rails/pull/18100

于 2019-02-15T12:14:58.470 回答