質問: Ruby on Railsでページを作っているのですが、一つのページに2つのformを置いた場合のルーティングの方法が調べてもわからず、恐縮ですがこちらで質問させていただきます。 以下のようにページに2つのフォームを置いた場合に、submitボタンのルーティングに書かれた部分の上(今回の場合だとupdate)が呼ばれてしまいます。もう片方のボタンはviewupdateのメソッドを呼びたいのですが、ルーティングにどのように記載すればよいのかをご教示いただけないでしょうか。 よろしくお願いいたします。 ``` -------routes.rb ------- post "user/:id" => "user#update" post "user/:id" => "user#viewupdate" ------personal.html.erb------- <%= form_with(model: @userinfo, url: '/user/update') do |f| %> ・ ・ ・ <%= f.submit '保存' %> <%= f.text_field :XXXXX %> <% end %> <%= form_with(model: @userinfo, url: '/user/viewupdate') do |f| %> ・ ・ ・ <%= f.submit '適用' %> <% end %> ------user_controller.rb------- def update 処理 end def viewupdate 処理 end ``` ![データ表示](https://teratail.storage.googleapis.com/uploads/contributed_images/eaabd718de901d955fe3208fdf2a02b5.png)
回答: 区別が不可能なのである意味当然ですが、URLとHTTPメソッドの1組に対して、定義できるルーティングは**1つだけ**です。 `user#viewupdate`に別なアドレスを割り当てて、もう1つのフォームはそちらにPOSTする、という手しかないと思います。