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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

2回答

12771閲覧

複数のformを一つのsubmitで同時に送信したい。

nonnonno

総合スコア16

Ruby on Rails

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2018/06/18 07:29

編集2018/06/18 07:43

前提・実現したいこと

railsを用いて、複数のformを一つのsubmitで同時に送信したい。

追加:
複数人の評価を別々に保存したいからです。
例えばAさんが、Bさん、Cさん、Dさんの評価をすることもあるし、
Bさんだけを評価することがあることを実現したいです。

発生している問題・エラーメッセージ

”送信する”を押すと、iPhoneのみで以下のようなページに遷移してしまう。
なおiphone以外では正常に動作します。
イメージ説明

エラーメッセージ

該当のソースコード

rails

1<% n=1 %> 2 <% @evaluated.each do |member|%> 3 <%= form_for @evaluation , html: {id: "form#{n}"} do |f| %> 4 <%= f.hidden_field :game_id, value: @game.id %> 5 <%= f.hidden_field :evaluator_id, value: current_member.id %> 6 <%= f.hidden_field :evaluated_id, value: member.id %> 7 <div class="card my-2"> 8 <div class="m-3"> 9 <h3><%= member.name %>さんへの評価</h3> 10 <div class="star mt-2 mb-2"></div> 11 <div class='form-team'> 12 <%= f.text_field :comment, class:'contact-form text-white', placeholder: "コメント" %> 13 </div> 14 </div> 15 </div> 16 <% end %> 17 <% n+=1 %> 18 <% end %> 19 20 <span id="count" style="display:none;"><%= @evaluated.count%></span> 21 <div class="actions text-center mt-5"> 22 <input value="送信する" type="submit" id="send_evaluation" class="btn btn-lightblue"> 23 <input value="戻る" type="button" style="display:none;" id="back-button" class="btn btn-lightblue mb-3"> 24 </div>

jquery

1 2var button = document.getElementById('send_evaluation'); 3var button2 = document.getElementById('back-button'); 4var n = document.getElementById('count').textContent; 5 6button.onclick = function(){ 7 if(confirm("評価、コメントに間違いはありませんか?")){ 8 this.style.display = "none"; 9 button2.style.display ="inline"; 10 for(var i=1; i<=n; i++){ 11 (function(param) { 12 setTimeout(function(){ 13 var form = document.getElementById("form"+ param); 14 form.submit();}, 300*param); 15 }); 16 }; 17 } 18};

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

この画面遷移の問題の解決法または、
form複数個を同時に送信する方法をご教授いただければと思います。
どうぞよろしくお願いいたします。

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

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

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

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

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

m.ts10806

2018/06/18 07:34

そもそもですが、なぜフォームをわけるのでしょうか。前提・背景を具体的に記載してください。
nonnonno

2018/06/18 07:43

追記しました。
guest

回答2

0

複数のフォームを同時送信するということは

  • いくつも処理が枝分かれする
  • バックグラウンドで処理する

のどちらかだと思います。
前者は最初のサブミットが発生した時点で次の処理が走りません。
対応策としてはtargetを設定して自分自身以外にサブミットすることですが
複数の飛び先への処理はポップアップブロックの対象になるかもしれません
一つ送っては閉じる、別のものを送るみたいな処理ならできるかもしれません

後者の場合、ajaxで処理することになります
ajaxの場合飛び先がクロスドメインには対応しないケースが多いので注意ください

投稿2018/06/18 07:45

yambejp

総合スコア114829

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

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

nonnonno

2018/06/18 07:51

setTimeoutでformを順番に送信しているのですが、この方法であると問題がありますか?一応動作はします。
m.ts10806

2018/06/18 08:01

私もAjaxで処理した方が良いと思います。
yambejp

2018/06/18 08:47

折衷案として送り先が5個あったとき、4個はajaxで送った後、最後の1個だけサブミットするとか やりようはあるかと
guest

0

自己解決

fields_forを用いて配列で処理しました。

投稿2018/06/21 03:01

nonnonno

総合スコア16

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問