Rails4 form_tagでactionとmethodを指定する
form_tagでactionとmethodを指定したかった。
ルーティングは下記のように設定してあった。
resource :test, only: [:edit, :update]
edit内で、form_tagを使用していたが、初期値では、methodがpostになってしまったため、自分でmethodにpatchを指定する必要があった。
まず、下記のように記載したが、うまくいかなかった。
<%= form_tag({action: 'update', method: 'patch'}) do %>
HTMLのソースを表示すると、下記のようにmethodがactionの一部になっていた。
<form accept-charset="UTF-8" action="/test?method=patch" method="post">
下記のようにハッシュを分けるとうまくいった。
<%= form_tag({action: 'update'}, {method: 'patch'}) do %>
HTMLのソースを表示すると、actionもmethodも正常に設定されていることが確認できた。
<form accept-charset="UTF-8" action="/test" method="post"> <input name="_method" type="hidden" value="patch" />