質問: resourceベースのルーティングをしていれば、 デフォルトですとrailsの`f.submit`ビューヘルパーはHTTPメソッドから判断して特にアクション先を指定せずともボタンを押せばupdateやcreateメソッドに飛ぶようによしなにやってくれると思います。 しかし **edit画面を分割したくて**以下のようなルーティングにしたとします。 同時にupdateアクションもedit画面に応じて分割するとします。 ``` resources :accounts, :only => [:index, :show, :edit, :update] do member do #追加したeditとupdateアクション get 'edit_detail' patch 'update_detail' end end ``` コントローラー/アクションは以下のようになっているとします ``` def edit end def edit_detail end def update end def update_detail end ``` つまり1つのモデル(テーブル)に対して通常用のedit,updateアクションとdetail(詳細用)のedit,updateアクションがあるケースです。 7つのresourceベースのルーティングでないパターンの場合(railsの設計思想に沿ってはいないかもしれませんが、、、) どうやってsubmitボタンを押した時の遷移先を指定してあげられるでしょうか? button_toヘルパーを用いて、以下のようにして `<%= button_to "送信", update_detail_account_path(:id => account.id) %>` 値を渡すことも考えたのですが、値を渡す為の引数が多くなると辛いため、submitボタンで一気にサーバー側に値を送りたいです。 インターネットでリファレンスを探していたのですが、なかなか良いリファレンスに出会えず質問しました。 またsubmitボタンを使用しづらい場合の代替案をお教えいただくと助かります。 よろしくおねがいします
回答: こんばんは。 おそらく`form_for`を利用されていると思っての回答です。 form_forには url のオプションをつけることができ、action先を変更することができます。 例) ``` <%= form_for @account, url: update_detail_account_path(@account) do |f| %> <%= ここにf.text_fieldなど %> <%= f.submit %> <% end %> ``` xxx_pathで返ってくるのはactionやcontrollerを持つハッシュなので直接書いてもOK ``` <%= form_for @account, url: { action: 'update_detail' } do |f| %> ```