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

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

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

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

JavaScript

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

Q&A

解決済

1回答

871閲覧

view内からベタ書きのjava scriptを呼ぶ動作について

pecchan

総合スコア592

Ruby on Rails 5

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

JavaScript

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

0グッド

0クリップ

投稿2020/07/08 01:48

rails5.2です。

Java Scriptの動作について勉強してるところです。

下記の記事によると、view内に書いたベタ書きのスクリプトは、
参照できない("$" が呼び出せない)と記載あります。

Rails assets 内の JavaScript のメソッドを View 内から呼び出す方法

以下に参考先のソースを転載します。

app/views/layouts/application.html.erb

ruby

1<html> 2<head> 3 <title>Sample App</title> 4 <%= stylesheet_link_tag 'application', media: 'all' %> 5 <%= csrf_meta_tags %> 6</head> 7<body> 8 <%= yield %> 9 <%= javascript_include_tag 'application' %> 10</body> 11</html>

app/views/users/index.html.erb

ruby

1 2<div id="users"> 3 ..... 4</div> 5<script> 6 $("#users").... // <- "$" が呼び出せない!! 7</script>

ところが上記を実際に動かすと普通に呼び出せました。
ちょっと混乱してきました???

この動作について教えていただけないでしょうか?

真似して実際に動かしたプログラムは以下です。

私の環境では、<%= javascript_include_tag %>の行は<head>内でした。
参考先に合わせてyield の真下に移動させても結果は同じでした。

app/views/layouts/application.html.erb

ruby

1<!DOCTYPE html> 2<html> 3 <head> 4 <title><%= full_title(yield(:title)) %></title> 5 <%= csrf_meta_tags %> 6 <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> 7 <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> 8 <%= render 'layouts/shim' %> 9 </head> 10 11 <body> 12 <%= render 'layouts/header' %> 13 <div class="container"> 14 <% flash.each do |message_type, message| %> 15 <%= content_tag(:div, message, class: "alert alert-#{message_type}") %> 16 <% end %> 17 <%= yield %> 18 </div> 19 <%= render 'layouts/footer' %> 20 <%= debug(params) if Rails.env.development? %> 21 </body> 22</html> 23

以下のようにすると、「ほげ。」が表示されました。
app/views/users/index.html.erb

ruby

1<div id="hoge">ほげ。</div> 2 3<script> 4 alert ($('#hoge').html()); 5</script>

なぜ当方の環境では、参照できたのでしょうか?
初心者につき的外れなことを質問しているかもしれませんが、どうぞ宜しくお願いします。

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

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

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

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

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

maisumakun

2020/07/08 01:52

> 私の環境では、<%= javascript_include_tag %>の行は<head>内でした。 これでは全く話が違います。先に読み込めば、当然参照可能です。
pecchan

2020/07/08 02:00

有難う御座います。 なので、yield の真下の行に移動させたのですが同じでした。
maisumakun

2020/07/08 02:01

そのページでリロードしても正しく動作しますか?
pecchan

2020/07/08 02:07

度々すみません、有難う御座います。 そのご質問で気付けました。 モーダルで実行してるせいでした。 お騒がせして申し訳ございませんでした。
guest

回答1

0

自己解決

お騒がせしてすみませんでした。

当方の試したviewは、モーダルで起動していたせいでした。

投稿2020/07/08 02:08

pecchan

総合スコア592

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問