24

私はRailsと私が持っているコントローラの初心者です:

class PagesController < ApplicationController
   def home
      @temp = "Hello"
   end
end

javascript コードを application.js に配置する必要があることを読みました (true の場合は教えてください)。

window.onload=function(){alert("<%= j @temp %>")}

明らかに、そのアラートは文字列「<%= j @temp %>」を出力します。アラートが Hello を出力できるように、変数 @temp を JavaScript に渡すにはどうすればよいですか?

ありがとう

4

3 に答える 3

65

Ruby オブジェクトをクライアントに渡す方法について記事を書きました。Ryan Bates は、JS へのデータの受け渡しに関する優れたRailsCastも提供しています。

PagesControlle#home アクションに対応するビューに div を追加します。これは、ページをロードしたときに表示されませんが、Ruby オブジェクトに保存されたデータが含まれます。

# views/pages_controllers/home.html.erb
<%= content_tag :div, class: "temp_information", data: {temp: @temp} do %>
<% end %>

この div が含まれているページを読み込み、ページのソースを表示します。.temp_informationdivに保存されている Ruby オブジェクトを確認できます。JavaScript コンソールを開き、Ruby オブジェクトに JavaScript オブジェクトとしてアクセスします。

$('.temp_information').data('temp')

JS を JS パーシャルに追加する必要はありません。アセット パイプラインを使用することもできます。

于 2013-08-10T13:25:48.353 に答える