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

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

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

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

Ruby on Rails

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

JavaScript

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

jQuery

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

Q&A

解決済

1回答

1362閲覧

【rails】 controllerからインスタンス変数をviewのscript内で使いたい。

YousukeTanaka

総合スコア79

Ruby

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

Ruby on Rails

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

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2017/11/18 13:27

rails初心者です。表題の件で質問させてください。

確認したい点(2点)

  • controller側のインスタンス変数を@@@.html.erb内にある<script></script>内で使用したい。
  • 予約できない日付けをcontroller側で取得して、.html.erbのjsに渡しているが、

それを変数holidaysに格納していきたい。従って、jsの文も正しいかどうか(特にfor文)を確認していただきたいです。


起きている問題

インスタンス変数は、view側へ渡されているが、それがjsの変数に渡っていないことが確認できました。
@bookingsでは、値が入っており、unavailableDayを確認すると、以下のようなNameErrorがでます。
イメージ説明


状態

Controller def new @listing = Listing.find(params[:listing_id]) @reservation = current_user.reservations.build if @reservation today = Date.today @reservations = Reservation.where("start_date >= ?", today) @bookings = @reservations.to_json json形式に直して、@bookingsへ値を格納。ここの時点では、値は入っています。 end end
view/@@.html.erb <script> $(function(){ //①予約できない日を配列で確保 var holidays = []; unavailableDay = <%= @bookings %>; <% binding.pry %>   for (var i = 0; i <= unavailableDay.length; i++) { var d = new Date(date.start_date); holidays.push($.datepicker.formatDate("yy/mm/dd",d)); }

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

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

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

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

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

guest

回答1

0

ベストアンサー

jsの文も正しいかどうか(特にfor文)を確認していただきたいです。

for文は特に問題ないかと。しかし、初出のunavalableDayの前にvarが足りません。

controller側のインスタンス変数を@@@.html.erb内にある<script></script>内で使用したい。

.html.erbのファイル内では任意の場所でインスタンス変数が使用可能です。そもそも.erbは埋め込みRuby(Embeded Ruby)のことで、Rubyコードが埋め込めるという意味です。なので、当然Rubyのインスタンス変数が利用できます。逆に、JSのファイルを例えば.jsの別ファイルに分けてしまうと使えません。.erbじゃないからです。ただし、.js.erbを使えばインスタンス変数が使えます。

エラーを見える限り、pryの部分でエラーが起きているように見えるので、値が渡せていないことがエラーの原因ではないと思います。

投稿2017/11/18 13:46

Takahito_Ogawa

総合スコア229

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

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

YousukeTanaka

2017/11/18 14:07

確認いただき、大変ありがとうございます。そうでしたか、pry側の問題とは気づきませんでした。今後はこの点も頭に入れておきます。早速、修正してみます。
YousukeTanaka

2017/11/24 05:42

修正が終わり、無事表示がされました。大変ありがとうございました。感謝しています。
Takahito_Ogawa

2017/11/24 05:52

どういたしまして。がんばってください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問