Ruby on rails HTTP PUT/DELETE不适用于Apache2、乘客、Rails 4

Ruby on rails HTTP PUT/DELETE不适用于Apache2、乘客、Rails 4,ruby-on-rails,apache,http,passenger,Ruby On Rails,Apache,Http,Passenger,我这辈子都无法解决这个问题。我用我能想到的每一个关键词到处搜索,却找不到一个直截了当的答案 如何为Apache、Phusion、Rails 4生产服务器堆栈启用HTTP PUT和DELETE? 我真的很困惑为什么这么难工作。Peeps,让我的AJAX PUT和DELETE请求在后端被接受的诀窍是什么?当我在本地机器上运行Webrick for development时,这种方法就行了,但我们的生产站点似乎不接受PUT和DELETE请求 我甚至不知道这是一个Apache问题,乘客问题,还是什么。必

我这辈子都无法解决这个问题。我用我能想到的每一个关键词到处搜索,却找不到一个直截了当的答案

如何为Apache、Phusion、Rails 4生产服务器堆栈启用HTTP PUT和DELETE?

我真的很困惑为什么这么难工作。Peeps,让我的AJAX PUT和DELETE请求在后端被接受的诀窍是什么?当我在本地机器上运行Webrick for development时,这种方法就行了,但我们的生产站点似乎不接受PUT和DELETE请求

我甚至不知道这是一个Apache问题,乘客问题,还是什么。必须有人使用完全REST功能完成此设置。或者这不是工作所需要的技术?(我不是服务器专家)。那样的话,你有什么建议


注意:应用程序的其余部分运行良好,只有浏览器中止的PUT/DELETE AJAX请求。

我也遇到了同样的问题,这是rails应用程序的问题

指针是my/var/log/apache2/error.log中的一行:

ActionController::RoutingError (No route matches [GET] "/javascripts/application.js")
解决办法是

config.assets.compile = true
config/environments/production.rb中
以及在服务器启动之前预编译资产

rake assets:precompile
我在这里找到了这个解决方案


您可能还想查看他链接的应用程序。

您可以使用Passenger Standalone检查它是否是Apache,它使用Nginx来服务其请求。不要运行
rails服务器
,只需运行
乘客启动
。检查是否有效。我使用
sudo服务apache2 start
启动我的服务器,我假设该服务器在某个时候调用
passenger start
,但我不知道。它没有<代码>乘客启动
单独启动乘客,而不是Apache的乘客。Passenger Standalone和Passenger for Apache是两个完全不同的东西。看,我也有同样的问题。它在乘客启动时工作正常。从别处收集的信息来看,出于安全原因,Apache似乎不允许PUT。我认为只有AJAX请求受到影响的原因是Rails通过发送带有额外参数的POST来伪造正常的PUT请求!在修改了使用POST的代码后,结果发现使用了错误的URL,访问了Rails之外的路径。