我正在尝试部署一个包含 jQuery Mobile 的 Rails 3 应用程序。它在开发中运行良好,我知道它需要预编译 JS 和 CSS 以用于生产。我收到以下错误:
Started GET "/orders/mobile" for 127.0.0.1 at Wed Jun 06 14:22:40 -0400 2012
Processing by OrdersController#mobile as HTML
Rendered orders/mobile.html.erb within layouts/mobile (642.9ms)
Completed 500 Internal Server Error in 1122ms
ActionView::Template::Error (jquery.mobile isn't precompiled):
5: <head>
6: <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
7: <title>Company Orders</title>
8: <%= stylesheet_link_tag 'jquery.mobile' %>
9: <%= stylesheet_link_tag 'jquery.mobile.structure' %>
10: <%= stylesheet_link_tag 'jquery.mobile.theme' %>
11: <%= stylesheet_link_tag 'http://fonts.googleapis.com/css?family=Ubuntu' %>
app/views/layouts/mobile.html.erb:8:in `_app_views_layouts_mobile_html_erb__605278794_69818059003840'
app/controllers/orders_controller.rb:330:in `mobile'
app/controllers/orders_controller.rb:329:in `mobile'
我已经阅读了通常的东西,但是这里有很多错误,我几乎不知道从哪里开始:
- 我在应用程序/资产中有 JQM 的东西,但后来将它们移到了供应商/资产中。它们被预编译器看到——我知道,因为它会在各种尝试中抱怨它们——但它们似乎从未被预编译(在任何一个位置)。
- 我已经
*= require_tree ../../../vendor/assets/stylesheets
在 application.css 中尝试过。我真的不希望它包含在每个页面点击中,所以我想将它包含在布局中,但我只是想以某种方式对其进行预编译。 - 我已经
*= require jquery.mobile[[.css].erb]
在 application.css 中尝试过。 - 我
config.assets.precompile += %w( [[./]vendor/assets/stylesheets/]jquery.mobile.* )
在 config/environments/production.rb 中尝试过。
作为最后的努力,我从 jquery.mobile.css.erb 中删除了“.erb”,并删除了<% asset_data_uri %>
标签以查看它是否可以编译。它通过了rake assets:precompile
命令,但仍然给我同样的错误。
我不想关闭 JQM 的预编译;我想让它工作。(我真的需要加快这个页面的速度。)但是,我找不到任何关于如何将 JQM 优雅地插入 Rails 3 应用程序(带有预编译)的指南,而且我已经用尽了我在试用中能想到的所有途径和错误。肯定有人这样做了,并且知道正确的方法。