ruby-on-rails - Rails 3 "_method=PUT"仍然可以工作吗?

标签 ruby-on-rails apache-flex

我正在使用 FLEX 3 向 Rails 3 发出 XML 请求。由于 FLEX 3 仅提供 POST 和 GET,因此我必须使用“?_method=PUT” hack 来保持适当的 REST 性:

http://127.0.0.1:3000/locator/locator_users/1.xml?_method=PUT

在服务器端,它显示为 POST,我收到一个 ActionController::RoutingError(没有路由匹配)。

我做了一个 rake 路由,路由就在那里,命名空间正确等等。 这在 Rails 2 中运行得很好,所以我有理由相信一定是 Rails 3 发生了变化。经过一番搜索后,人们似乎表示它应该仍然有效。但是,这不适合我。谁能确认或否认 Rails 3 兼容性?

更新

好吧,经过一番修改,我认为这实际上是 Flash Player 10 的问题。Flash PLayer 9 似乎可以很好地使用“_method=” hack,但 10 则不行。请参阅我写的这篇新文章 ( Flash Player 9 vs Flash Player 10 with FLEX 3, ?_method=PUT/DELETE not working? )。

最佳答案

这部分是由于 Rack::MethodOverride 的行为造成的。它不会检查 _method 的查询参数,因此调用 http://127.0.0.1:3000/locator/locator_users/1.xml?_method=PUT 因此不会被正确覆盖。

我写了一个piece of Rack middleware替换它来解决这个特定问题。

你所要做的就是 将其添加到Gemfile

gem 'rack-methodoverride-with-params'

config/environment.rb 中交换 Rack::MethodOverride

config.middleware.swap Rack::MethodOverride, Rack::MethodOverrideWithParams

关于ruby-on-rails - Rails 3 "_method=PUT"仍然可以工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3732183/

相关文章:

jquery - Rails 和 ajax 全局错误处理问题

javascript - 如何在 Javascript 中对 URL 的句点进行编码?

apache-flex - 有人可以向我解释这个常见的绑定(bind)陷阱吗? (使用错误的可绑定(bind)事件名称)

apache-flex - 在 Adob​​e Flex/AIR 应用程序中调整应用程序窗口大小时调整容器大小

apache-flex - SkinnablePopUpContainer 在视觉上被 Flex 中的 StageWebView 遮挡

java - Java/GWT 开发人员的 Flex 2D 图形学习路径?

ruby-on-rails - Lua 在 Rails 上?

ruby-on-rails - Rails Prawn文档的嵌入式字体错误

regex - 是否有可能在 ActionScript/Flex 中创建错误的正则表达式,从而导致运行时错误?

ruby-on-rails - 如何按关联模型计数对 ActiveRecord 结果进行排序?