自定义路线在开发中匹配,但在生产中产生404

时间:2013-04-16 15:44:15

标签: ruby-on-rails-3 routing ruby-on-rails-3.2 routes rails-cells

我的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之间的唯一区别是开发中的一个使用http,而生产中的一个使用https。我会理解,如果我写了一个错误的代码我的proc块,但是对于上帝的爱,我无法理解为什么它在生产环境中不匹配,当它在开发中完美地工作时。

高度赞赏任何有关如何调试此功能的提示。我头上没有那么多头发了。

1 个答案:

答案 0 :(得分:1)

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

原来,对于乘客,上述路线中的:名称未被解释为“报告%2Fother%2Fexample”,但可能是/ block / 报告 / other / example / new“当然,其余部分不匹配。

我通过替换

修复了错误
match "/block/:name/:action"

match "/block/*name/:action"

我希望这个对我自己的问题的回答可以帮助将来的某个人。