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

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

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

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

Q&A

解決済

1回答

2619閲覧

submitボタンの disabled=true が戻ってしまいます

azumaken

総合スコア14

Ruby on Rails 5

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

0グッド

0クリップ

投稿2021/06/17 02:45

編集2021/06/17 04:57

一度しか押せないsubmitボタンを作成したのですが、ページ遷移やリロードをすると元に戻ってしまいます。
下記のコードなのですが、どのようにすれば問題が解決出来るのでしょうか。
お忙しい中恐れ入りますが、術を教えて頂けると幸いです。

reb

1<%= form.submit "確認", onclick: "disabled = true;", class: "btn btn-primary " %>

jqueryにて下記のように記載しても同じくダメでした・・・

erb

1<%= form.submit "確認", class: "btn btn-primary " %> 2 3<script> 4$(function() { 5 $('.btn').click(function() { 6 $(":submit", this).prop("disabled", true); 7 }); 8}); 9</script> 10

宜しくお願い致します。

追記:

イメージ説明

・submitボタンがあるページは子モデルのindexです。

・確認ボタンは子モデルのインスタンス毎に持っています

・ボタンを押すと中間テーブルにcurrent_user.idとボタンを押した子モデルのidがレコードに追加されます。

・current_userに紐づく子モデルの数をcountし、current_userのshowページにて「◯件確認済み」と表記します

上記の内容から、ページ遷移やリロードによって、deleteが戻ってしまうと、同じ子モデルのインスタンスが何度もcountできてしまうため、一度きりのボタンを作成したいです。
しかし、新たな子モデルのインスタンスが追加された場合は、indexに追加されるので、ページには何度も遷移できる必要があります。

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

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

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

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

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

maisumakun

2021/06/17 02:47

「どのような条件」に対して1度しか押せないようにしたいのでしょうか。 (現状のコードでは、「1回のページ表示」に対してボタンが1度だけ押せる、という実装となっています)
azumaken

2021/06/17 02:59

早急のお返事ありがとうございます。「1回のページ表示」になっているのですね。 submitボタンですので、1度対象データを送信したら、ページ表示関係なく2度と送信できなくしたいです。
maisumakun

2021/06/17 03:01

> ページ表示関係なく2度と送信できなくしたいです。
guest

回答1

0

ベストアンサー

submitボタンですので、1度対象データを送信したら、ページ表示関係なく2度と送信できなくしたいです。

それはボタンで制御するのではなく、再表示やブラウザバックの方をできなくすることで制御すべきものではないかと考えます。

投稿2021/06/17 03:04

maisumakun

総合スコア145184

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

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

azumaken

2021/06/17 04:32

ありがとうございます。ブラウザバックを行った場合、submitボタンを押した後に他のページに遷移し、再度ボタンのあるページに遷移することは出来るのでしょうか。
maisumakun

2021/06/17 04:36

どういう背景(させたい/させたくないなど)での疑問ですか?
azumaken

2021/06/17 04:59

わかりにくい内容で、大変申し訳ありません。 うまく説明ができなくて恐縮ですが、本文に追記させていただきました。
maisumakun

2021/06/17 05:02

でしたら逆に、ボタンを押した時にページ遷移させるのではなく、JavaScriptを使って「Ajaxでレコードを作る&ボタンを無効化する」というような対応法も考えられます。
azumaken

2021/06/17 09:20

ご提示ありがとうございます。 数時間考察したのですが、下記のコードしかわからず解決できません。 何度も申し訳ないのですが、ヒントなどをいただけないでしょうか <%= form_with(model: Intermediate, url: user_intermediates_path(current_user), remote: true) do |form| %> <%= hidden_field_tag :user_id, current_user.id %> <%= hidden_field_tag :care_user_id, care_user.id%> <%= form.submit "確認", class: "btn btn-primary " %> $(() => { $(".btn").on("submit", (e) => { e.preventDefault(); const formData = new FormData(e.target); const url = $(e.target).attr("action"); $.ajax({ url: url, type: "GET", data: formData, dataType: "json", processData: false, contentType: false }).done((data) => { }); }); });
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問