質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

1回答

1291閲覧

一つのページに2つのformを置いた場合のルーティング

lyzmfeqpxs54

総合スコア237

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2017/08/24 06:51

編集2017/08/24 07:50

Ruby on Railsでページを作っているのですが、一つのページに2つのformを置いた場合のルーティングの方法が調べてもわからず、恐縮ですがこちらで質問させていただきます。

以下のようにページに2つのフォームを置いた場合に、submitボタンのルーティングに書かれた部分の上(今回の場合だとupdate)が呼ばれてしまいます。もう片方のボタンはviewupdateのメソッドを呼びたいのですが、ルーティングにどのように記載すればよいのかをご教示いただけないでしょうか。

よろしくお願いいたします。

Ruby

1 2-------routes.rb ------- 3 4post "user/:id" => "user#update" 5post "user/:id" => "user#viewupdate" 6 7 8 9------personal.html.erb------- 10 11<%= form_with(model: @userinfo, url: '/user/update') do |f| %> 12131415 <div class="actions"> 16 <%= f.submit '保存' %> 17 </div> 18 <%= f.text_field :XXXXX %> 19<% end %> 20 21<%= form_with(model: @userinfo, url: '/user/viewupdate') do |f| %> 22232425 <div class="actions"> 26 <%= f.submit '適用' %> 27 </div> 28<% end %> 29 30 31------user_controller.rb------- 32 33def update 34 処理 35end 36 37def viewupdate 38 処理 39end 40 41

データ表示

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

区別が不可能なのである意味当然ですが、URLとHTTPメソッドの1組に対して、定義できるルーティングは1つだけです。

user#viewupdateに別なアドレスを割り当てて、もう1つのフォームはそちらにPOSTする、という手しかないと思います。

投稿2017/08/24 07:11

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lyzmfeqpxs54

2017/08/24 07:52

ご回答ありがとうございます。作りたいボタンの片方はフォーム情報をデータベースに保存したいので、formを使用するべきだと考えていたのですが、もう片方は追加したイメージのように、別のデータベースを表示するようなものです。こういった場合formを使うのは適切ではないということでしょうか。
maisumakun

2017/08/24 07:57

routes.rbの「post "user/:id" => "user#update"」は、「/user/(ID)のアドレスにPOSTを投げたら、user#updateを呼び出す」という意味です。 form_withにも url: '/user/viewupdate'をセットしてあるのですし、user/viewupdateをuser#viewupdateにつなぐようにルートを設定しましょう(フォームはそのままで大丈夫です)。
lyzmfeqpxs54

2017/08/24 08:43

ご回答ありがとうございます。 post "user/:id" => "user#viewupdate"  → post "user/viewupdate" => "user#viewupdate" のようにするということでしょうか。この場合だとuser/viewupdateのページを作る必要がでてきてしまうと思うのですが、このページ内で画面の表示を変えたい場合はどのようにするべきなのでしょうか。 ルーティングがあまりわかっておらず、お手数をおかけしてしまい大変申し訳ございません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問