私は現在、Rails 3.2 アプリケーションを Rails 4 に更新していて、Rails が更新用の主要な HTTP 動詞として PATCH を使用しているという問題に遭遇しました。ユーザーが注文を作成するために使用できるフォームがあります。このフォームはモデル「temporders」を使用しています。ユーザーがフォームを送信すると、/orders/new にリダイレクトされ、そこで最初のフォームを確認して確認できます。Orders#new は、「@order = Temporder.find session[:temporder]」を使用して、確認フォームのデータを取得します。そのフォームは、「/orders」への POST リクエストとして送信する必要があります。「注文」は安らかなリソースとして宣言されています。
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 は、既存の「temporder」オブジェクトからデータを取得し、POST の代わりに PATCH を使用するため、これが既存の注文オブジェクトの更新フォームであると想定していると思われます。質問: このフォームに POST メソッドを強制するにはどうすればよいですか?