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>
なぜ当方の環境では、参照できたのでしょうか?
初心者につき的外れなことを質問しているかもしれませんが、どうぞ宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー