【问题标题】:Random routing errors in Rails public routingRails 公共路由中的随机路由错误
【发布时间】:2013-02-07 04:21:33
【问题描述】:

我正在编写一个要变成PhoneGap/Cordova 应用程序的jQuery Mobile 网站。为此,我创建了一个全新的 rails 项目,在更改为 web 服务器的“瘦”gem 后,将整个 jQuery Mobile 应用程序放在新 Rails 项目的 public/myapp 文件夹中。

这一切都很好;我可以从 localhost:3000/myapp 访问我的移动应用程序,但经过几个小时的测试后,Rails 应用程序突然开始在各处抛出 404。可能发生了什么?

这是我在 rails 服务器日志中看到的错误之一:

ActionController::RoutingError (No route matches [GET] "/js/setlocation_address.js"

基本上,我的<head> 标记中对 javascript 或 css 文件的每个引用都会返回 404 错误。

【问题讨论】:

  • 如果这是一个 Rails 3 项目,您可能需要检查资产管道是否没有造成问题。我不确定当没有触发引用它们的 HTML 时,JavaScript 文件在开发模式下会停留多长时间。
  • 是rails 3,但我认为资产管道不会影响公用文件夹?
  • 哦,如果您将它们放在公用文件夹中,您可能只会让资产管道生气。据我所知,除非您完全禁用资产管道功能,否则该方法已被弃用。您的服务器软件可以提供其他静态文件吗?

标签: ruby-on-rails


【解决方案1】:

我认为解决办法是放

config.serve_static_assets = true

config/environments/production.rb 文件中,但我不确定这是否解决了问题,因为它是间歇性问题。

编辑

实际上,问题似乎是我有时会去localhost:3000/myapp,有时会去localhost:3000/myapp/index.html

虽然 Rails 每次都会将我路由到同一个 index.html 页面,但我的浏览器无法正确获取相对路径,并且会尝试 GET localhost:3000/css/styles.css 而不是 localhost:3000/myapp/css/styles.css

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2012-07-11
    • 1970-01-01
    相关资源
    最近更新 更多