0

我的 routes.rb 中有以下定义

  match "/block/:name/:action" => proc { |env|
    #heavy magic happens here
  }

我用它来处理单元格的渲染。我的问题是以下链接:

/block/reporting%2Fother%2Fexample/new?exampleable_id=23736&exampleable_type=Abc%3A%3ASomeType

在开发模式下工作得很好,但在生产中我得到“404 Not Found”。生产和开发 url 之间的唯一区别是开发中的 URL 使用 http,而生产中的 URL 使用 https。如果我在我的 proc 块中编写了错误的代码,我会理解,但看在上帝的份上,我无法理解为什么它在生产环境中不匹配,而它在开发中工作得非常好。

任何有关如何调试的提示都非常感谢。我的头上没有那么多头发了。

4

1 回答 1

2

即使我最终在本地机器上的生产环境中启动了项目,我也会收到此错误。问题是我们不在生产中使用 Thin。我们使用乘客。在我终于让乘客在本地工作后,我设法重现了错误。

事实证明,对于乘客,上述路线中的 :name 并没有被解释为“reporting%2Fother%2Fexample”,而是可能被解释为 /block/ reporting /other/example/new”,当然其余的不匹配。

我通过替换修复了错误

match "/block/:name/:action"

match "/block/*name/:action"

我希望这个对我自己问题的回答对将来的人有所帮助。

于 2013-04-18T15:53:44.523 回答