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

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

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

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

Ruby

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

JavaScript

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

jQuery

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

Q&A

解決済

1回答

4818閲覧

rails data-confirm ok選択時のみ処理実行したい

lolohacker

総合スコア31

Ruby on Rails 5

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

Ruby

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

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2018/11/13 01:38

編集2018/11/15 04:05

実現したいこと

slim

1= link_to xxxx_path, name: "target_item", data: {confirm: "実行しますか?"}

上記のように確認ダイアログを出し、OKを選択したときだけ、testFunc関数を実行したいです
※coffeeではなくjavascriptで実装したい

問題

answerの値がundefinedになってしまい、testFunc関数が実行されないです

該当のソースコード

jquery

1 $(function () { 2 $("*[name=target_item]").on("confirm:complete", function(event, answer){ 3 if(answer){ 4 testFunc(); 5 } 6 }); 7 }); 8 9 function testFunc(){ 10 ※省略 11 }

間違っている箇所があればご指摘、ご教示お願い致します
実現不可能であれば、その旨の回答頂けると助かります

参考にした情報

http://inter-arteq.com/2016/06/30/railsconfirm%E3%81%A7ok%E3%81%97%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%A0%E3%81%91js%E3%82%92%E5%8B%95%E4%BD%9C%E3%81%95%E3%81%9B%E3%82%8B%E6%96%B9%E6%B3%95/

2018/11/13 17:45 追記
https://github.com/rails/jquery-ujs/blob/master/src/rails.js
を参照すると

js

1 /* For 'data-confirm' attribute: 2 - Fires `confirm` event 3 - Shows the confirmation dialog 4 - Fires the `confirm:complete` event 5 Returns `true` if no function stops the chain and user chose yes; `false` otherwise. 6 Attaching a handler to the element's `confirm` event that returns a `falsy` value cancels the confirmation dialog. 7 Attaching a handler to the element's `confirm:complete` event that returns a `falsy` value makes this function 8 return false. The `confirm:complete` event is fired whether or not the user answered true or false to the dialog. 9 */ 10 allowAction: function(element) { 11 var message = element.data('confirm'), 12 answer = false, callback; 13 if (!message) { return true; } 14 15 if (rails.fire(element, 'confirm')) { 16 try { 17 answer = rails.confirm(message); 18 } catch (e) { 19 (console.error || console.log).call(console, e.stack || e); 20 } 21 callback = rails.fire(element, 'confirm:complete', [answer]); 22 } 23 //ここでダイアログの選択値とコールバックを使用しているっぽそう 24 //そのため、ダイアログの選択値を持ってくるのは出来なさそうに見える。。。 25 return answer && callback; 26 },

となっており、今現在だとanswerの値を取得するのはできなさそう。。。?

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

・ruby 2.3.3p222 (2016-11-21 revision 56859) [x64-mingw32]
・Rails 5.1.5

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

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

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

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

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

guest

回答1

0

ベストアンサー

###参考にされたコードでは

yes or noになっていますよね。

###ちょっと基本に立ち返って

http://silverzwei.sakura.ne.jp/content/php/jsconfirm/content001.php
上記URLのJavaScript 部分のコードは使えないですか?

投稿2018/11/20 19:26

phpsyoshinsya

総合スコア156

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

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

lolohacker

2018/11/21 01:55 編集

上記のページに記載されている内容のような感じで、実装を進めていました。 これ以外は今のところ、方法がないですよねたぶん。。。 回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問