我是Rails和Heroku的新手,我正在尝试部署一个使用jQuery UI库的应用程序。我在我的app/assets
文件夹中有jQuery UI Javascript和CSS文件,我将它设置为预编译资产(我必须这样做以使我的应用程序实际上在Heroku上运行)。但是,当我加载页面时(jQuery UI无法正常工作),找不到jQuery UI文件。根据我收集的内容,它会将文件重命名为<filename>-<md5 hash>.js/css
。如何让它引用正确的文件?
app/views/layouts/application.html.erb
:
<%= stylesheet_link_tag "application" %>
<%= javascript_include_tag "application" %>
<%= javascript_include_tag "http://code.jquery.com/jquery-1.7.1.min.js" %>
<%= javascript_include_tag "jquery-ui-1.8.16.custom.min" %>
<%= stylesheet_link_tag "jquery-ui-1.8.16.custom" %>
<%= stylesheet_link_tag "http://fonts.googleapis.com/css?family=Open+Sans:300italic,400,300" %>
<%= csrf_meta_tags %>
答案 0 :(得分:5)
我实际上会建议删除预编译资产功能并允许Heroku为您执行此操作。我最初就像你一样开始,但很快就发现它是一种优越的方法,并且由Heroku支持推荐在slug编译期间进行资产编译。
请确保您使用的是Cedar堆栈,而不是Bamboo和take a look at this,然后按照下面的说明进行操作:
旁注特别重要:“如果在您的应用中检测到public/assets/manifest.yml
,Heroku将假设您自己正在处理资产编译,并且不会尝试编译您的资产。”
请确保删除预编译已创建的public / assets / *文件夹下的所有内容,包括manifest.yml
文件。
否则app/assets/javascripts
中的所有JavaScript文件都应自动包含在内,您应该能够在检查开发模式时看到这一点(默认情况下,在heroku的生产模式下,它们将全部缩小为一个应用程序.js文件,但如果它们以开发模式显示,则应为金牌。
答案 1 :(得分:2)
如果您使用默认的Bamboo堆栈,则需要自己按rake assets:precompile
预编译资产,并将结果提交到公共/资产并将其推送到Heroku。否则,使用Cedar堆栈可能是一个更容易的选择。
答案 2 :(得分:0)
如此处所述(https://devcenter.heroku.com/articles/ruby-support#static-assets)你 应该将'rails_serve_static_assets'gem添加到您的Gemfile中,问题将得到解决。