うちのいぬ Tech Blog

Tech Blog of Uchinoinu/My dog

Rails4.x で simple_formを使って、create(登録)とupdate(編集)で同じformを使う際の注意

http://affexceed.art.coocan.jp/sea/unit_01/data/aff_data010.jpg

simple_formを使っています。

同じformを使ってcreateとupdateをすることが多いと思います。

症状

updateを叩いたつもりが、こんなエラーに出くわしました。

Routing Error No route matches [PATCH] “/hoge"

ちなみにroutingは

POST     /hoge(.:format)      hoge#create
PATCH    /hoge/:id(.:format)  hoge#update

当然両者で異なるわけですが、url的にはcreateの方を見ている?

#原因

<%= simple_form_for(@hoge, :url => hoges_path, :html => {:id => 'hoge_form', :multiport => true}) do |f| %>

このurlがダメです。

なので、

<%= simple_form_for(@hoge, :html => {:id => 'hoge_form', :multiport => true}) do |f| %>

削除して解決!