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

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

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

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

Ruby on Rails

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

Q&A

解決済

3回答

429閲覧

【rails】binding.pryの使い方について質問させてください。

YousukeTanaka

総合スコア79

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2017/11/19 07:27

編集2017/11/19 07:32

ruby初心者です。表題の使い方について質問させてください。

問題点

binding.pryをviewのscriptタグ内において、変数に入った値を確認していますが、NameErrorが出てしまいます。

現象

イメージ説明

やりたいこと

①以下のコードの、unavailableDayに値が格納されているか、 ②dayに値が入っているか、 ③holidaysに値が入っているか、 を確認したい。

疑問点(確認したい点)

①binding.pryはerb内ではどこでも使えると考えていましたが、別の使い方があるのでしょうか? ②なぜ、NameError: undefined local variable or methodがでるのでしょうか? ③terminal内で異なる調べ方があるでしょうか?

コード

<script> $(function(){ //①予約できない日を配列で確保 var unavailableDay = <%= @bookings %>;   $.each(unavailableDay,function(objID,objValue){ for(var i = 0; i <= objValue.length; i++){ var day = new Date(objValue.start_date); holidays.push($.datepicker.formatDate("yy/mm/dd",day)); } }); var holidays = []; <% binding.pry %> //②datepickerで予約できない日を除く日程を選択 $("#datetimepicker1").datepicker({ dateFormat: "yy/mm/dd", maxDate: "+2m", minDate: 0, beforeShowDay: function(date) { // 予約日の判定 for (var i = 0; i < holidays.length; i++) { var htime = Date.parse(holidays[i]); // 祝日を 'YYYY-MM-DD' から time へ変換 var holiday = new Date(); holiday.setTime(htime); // 上記 time を Date へ設定 // 祝日 if (holiday.getYear() == date.getYear() && holiday.getMonth() == date.getMonth() && holiday.getDate() == date.getDate()) { return [false, 'holiday']; } } // 予約日以外 return [true, '']; } }); }); </script>

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

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

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

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

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

guest

回答3

0

erbで生成されたスクリプトをブラウザが読み込む事でjsとして実行されます。
ruby側からみるとその部分は

rb

1puts "var holidays =[];"

くらいの関係性しかないです

js

1var holidays = []; 2console.log(holidays);

とすることでブラウザのコンソールに表示することはできます。

Firefox以後のモダンなブラウザはjavascriptデバッガを搭載していることが多いので
ブラウザ上でF12を押してみるなりして調べてみてください

投稿2017/11/19 07:47

asm

総合スコア15147

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

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

0

上で宣言されているholidaysJavaScriptの変数で、Rubyから見れば「ただの文字列」なので、変数としては存在しません。

JavaScriptのコンソールを使いたい場合は、debugger;と書けば(コンソールを開いた状態だと)そこで止まります。

投稿2017/11/19 07:35

maisumakun

総合スコア145183

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

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

YousukeTanaka

2017/11/19 07:36

ご回答ありがとうございます。私の理解が誤っていたことがわかり、感謝しています。jsでは、別の確認方法を使うことがわかり、大変助かりました。
guest

0

ベストアンサー

その部分のコードはCoffeScript(javascript)に見えます。
pryで参照できるのはrubyコード上の変数などですので、holidysは参照できないのです・・・。

javascriptを解析するには、console.logで変数をWEBブラウザのコンソールに出力させるか、WEBブラウザの開発者ツールでブレークポイント置いたりしてやって下さい。

投稿2017/11/19 07:33

devsx

総合スコア173

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

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

YousukeTanaka

2017/11/19 07:37

ご回答ありがとうございます。私の理解が誤っていたことがわかり、感謝しています。jsでは、別の確認方法を使うことがわかり、大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問