我的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块,但是对于上帝的爱,我无法理解为什么它在生产环境中不匹配,当它在开发中完美地工作时。
高度赞赏任何有关如何调试此功能的提示。我头上没有那么多头发了。
答案 0 :(得分:1)
即使我最终在本地计算机上的生产环境中启动了项目,我也收到了此错误。问题是我们在生产中不使用Thin。我们使用乘客。在我终于让乘客在本地工作之后,我设法重新创建错误。
原来,对于乘客,上述路线中的:名称未被解释为“报告%2Fother%2Fexample”,但可能是/ block / 报告 / other / example / new“当然,其余部分不匹配。
我通过替换
修复了错误match "/block/:name/:action"
到
match "/block/*name/:action"
我希望这个对我自己的问题的回答可以帮助将来的某个人。