为啥 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)
其中哪一个是与“最新导轨”应用程序一起使用的更好选择? Mongrel、Thin、WEBrick 和Passenger
由于 mysql2 或 mysql gems,无法在 Debian 上启动 Mongrel(或Passenger)