为啥 Mongrel 无法选择正确的 HTTP 动词?

Posted

技术标签:

【中文标题】为啥 Mongrel 无法选择正确的 HTTP 动词?【英文标题】:Why is Mongrel failing to pick up the correct HTTP verb?为什么 Mongrel 无法选择正确的 HTTP 动词? 【发布时间】:2008-10-08 15:41:43 【问题描述】:

我的 Rails 应用中有一个非常简单的routes.rb

ActionController::Routing::Routes.draw do |map|
  map.resources :tags
end

使用script/server 启动我的应用程序并将我的浏览器指向localhost:3000/tags/ 产生:

ActionController::MethodNotAllowed

Only get and post requests are allowed.

...

但是,使用 script/server webrick 启动我的应用程序可以解决问题。

稍后:以防万一,我在 OSX 10.5.5 上运行 Mongrel 1.1.5。

【问题讨论】:

【参考方案1】:
    检查生成的路由是否存在“rake routes | grep tag”问题 通过 tail -f log/development.log 检查实际调用的方法,以及调用它的动词

这应该会带来任何明显的问题。

【讨论】:

【参考方案2】:

我已经看到旧版本的 mongrel 会发生这种情况,但 1.1.5 并不旧。当浏览器向 URL 重复发布请求时,我也看到了一些类似的问题。这里发生了吗?

我需要更多信息才能帮助您:您使用的是什么浏览器?你在 Firefox 上使用 firebug 插件吗?除了 MethodNotAllowed 异常,服务器日志对请求还有什么说明?

【讨论】:

【参考方案3】:

需要检查的事项:

有时您需要重新启动服务器以加载新路由。 TagsController 存在吗? TagsController 中的索引操作是否存在?

我很想在这里看到堆栈跟踪。

【讨论】:

【参考方案4】:

您是否检查过您的代码,例如与 form_for 相关的代码,以检查是否有任何拼写错误?当您运行 rake 路线时,一切都好吗?我之前看到过这个问题,它与form_for参数中的拼写错误有关。

你更新你的杂种了吗? gem 更新杂种?

您检查过您的项目日志吗?日志*.log?

问候,

维克多

【讨论】:

以上是关于为啥 Mongrel 无法选择正确的 HTTP 动词?的主要内容,如果未能解决你的问题,请参考以下文章

带有 RVM 的 Rails mongrel 无法启动 - mongrel_rails (MissingSourceFile)

您如何在 Sinatra 中选择您的 HTTP 服务器?

其中哪一个是与“最新导轨”应用程序一起使用的更好选择? Mongrel、Thin、WEBrick 和Passenger

由于 mysql2 或 mysql gems,无法在 Debian 上启动 Mongrel(或Passenger)

为啥WORD里面图片一放,原本的格式就乱了。原来的文字跳来跳去,图片一动,文字就跟着动。

Nginx 和 Mongrel 的区别?