我目前正在将 Rails 3.2 应用程序更新到 Rails 4,并遇到了 Rails 现在使用 PATCH 作为更新的主要 HTTP 动词的问题。我有一个用户可以用来创建订单的表单。这种形式使用模型“temporders”。用户发送表单后,他将被重定向到 /orders/new,在那里他可以查看并确认第一个表单。Orders#new 使用“@order = Temporder.find session[:temporder]”来获取确认表单的数据。该表单应作为 POST 请求发送到“/orders”。“订单”被声明为一个宁静的资源。
orders_path GET /orders(.:format) orders#index
POST /orders(.:format) orders#create
new_order_path GET /orders/new(.:format) orders#new
edit_order_path GET /orders/:id/edit(.:format) orders#edit
order_path GET /orders/:id(.:format) orders#show
PATCH /orders/:id(.:format) orders#update
PUT /orders/:id(.:format) orders#update
DELETE /orders/:id(.:format) orders#destroy
<%= form_for @order, :as => :order, :url => orders_path, :html => {:multipart => true} do |f| -%>
但是,当我发送表单时,Rails 会生成错误“没有路由匹配 [PATCH]“/orders””,我尝试添加“method: :post”,但没有帮助。我怀疑 Rails 4 假设这是现有订单对象的更新表单,因为我从现有的“临时订单”对象获取数据,因此使用 PATCH 而不是 POST。问题是:如何强制此表单使用 POST 方法?