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

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

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

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

JavaScript

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

jQuery

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

2回答

5016閲覧

【Ruby on Rails】method delete実行前にonClickなどの処理を挟みたい場合

MaShiRo_H

総合スコア328

Ruby

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

JavaScript

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

jQuery

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

1グッド

0クリップ

投稿2016/06/21 14:08

こんばんは。
いつもお世話になっています。

Railsで、delete時に入力ダイアログにパスワードなどを入力させて
trueなら削除、falseなら中断するという挙動を実現させたいのですが、
調べても解決策が見つからず困っております。

HTML

1<%= link_to "削除する", profile, method: :delete, data: { confirm: "削除しますか?" } %>

という通常のconfirmではなく、

HTML

1<%= link_to "削除する", profile, method: :delete, onClick: "return password();" %>

といったようにイベントを設定し、

JavaScript

1function password(){ 2 password = window.prompt("パスワードを入力してください"); 3 if(password !== "000") { 4 return false; 5 } else if(password == "000") { 6 return true 7 } 8}

jsで判定してからdeleteを実行したいのですが、上記のやり方では当然ダメでした。
(何をしてもmethodが呼び出され、削除されます。)

何か解決策、ご助言をいただけますと幸いです!m(_ _)m
また、Railsに対する理解がまだまだ浅いため、
根本的に何か間違えていたらその点についても教えていただけると嬉しいです。

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

OhMyGod👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

一応解説すると

rails

1<%= link_to "削除する", profile, method: :delete, data: { confirm: "削除しますか?" } %>

は内部的には
link_to に :method => :delete を指定した時の動作
に書いてあるとおり、jsでformを生成してsubmitするという挙動になっています。

なので、

html

1 2<form method="delete" action="delete methodのurl" id="form"> 3 ここに削除に必要な情報を書いていく 4 <input type="submit" value="削除"> 5</form>

みたいに書いて、

js

1 2var $form = $('#form'); 3 4function isPasswordTrue(){ 5 password = window.prompt("パスワードを入力してください"); 6 if(password == "000") { 7 return true; 8 } else{ 9 return false 10 } 11} 12 13$form.on('submit', function(e){ 14 //デフォルトのsubmitの挙動をストップ 15 e.preventDefault(); 16 17 //パスワードの入力が間違っていたら処理を止める 18 if(!isPasswordTrue()) return false; 19 20 //削除処理実行 21 $form.submit(); 22});

みたいな感じで実装できると思います!
(ちょっとだけコード変えました!)

railsは中身がブラックボックス化するので怖いですよね!
頑張ってください!

投稿2016/06/22 01:10

MasakazuFukami

総合スコア1869

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

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

MaShiRo_H

2016/06/23 02:30

ご丁寧かつ親切なご回答、ありがとうございます! トリッキーですが >railsは中身がブラックボックス化するので怖いですよね! 貼っていただいたリンクに目を通して、改めてそう思いました... 独自仕様にカスタマイズしようとすると、なかなかに大変ですね><
MasakazuFukami

2016/06/23 02:31

ですねーー! でもブラックボックス化しているものの中身をしっかり読んでいくとすごく勉強になりますよ! railsは楽すぎて微妙っていう方も沢山いますが、中身をしっかり読んで、railsに使われるのではなく、railsを使いこなすくらいになれれば他のどのフレームワークを触っても問題ないくらいになると思いますので頑張ってください!
guest

0

こんばんは。
ぁたしにはよく分からないんですけど…。
ネットで調べたら出てきませんか?

投稿2016/06/21 15:09

OhMyGod

総合スコア16

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問