0

私のアセットにはmaps.js.erb、基本的に次の(デバッグ)コンテンツのみを含む、というファイルがあります。

alert("<%= @map.width %>");

このJSファイルはshow.html.erb、マップに属するビューを介してロードされます。

<%= javascript_include_tag params[:controller] %>
<h1><%= @map.title %></h1>
…

HTMLファイル自体は、コントローラーで定義されている/maps/1/ため、たとえば参照するときにマップのタイトルを表示します。@mapただし、JSファイルを含めるとすぐに、次のエラーが発生します。

Maps#showのNoMethodError

…/app/views/maps/show.html.erb行#1が上がった場所を示す:

nil:NilClassの未定義メソッド'title'(in …/app/assets/javascripts/maps.js.erb

  • なぜファイル@mapで利用できないのjs.erbですか?
  • コントローラで定義されているこのインスタンス変数に他にアクセスするにはどうすればよいですか?
4

3 に答える 3

1

Ryan Bates がそのトピックに関するスクリーンキャストを行いました。ぜひチェックしてみてください。

http://railscasts.com/episodes/324-passing-data-to-javascript


このhtml.erbファイルでは、次の変数を定義できます。

<%= javascript_tag do %>
  window.productsURL = "<%=j products_url %>";
  window.products = <%=raw Product.limit(10).to_json %>;
<% end %>
于 2012-04-12T20:30:38.527 に答える
1

一般的な js ファイルで @map.title を評価することはできません。これは、そのファイルが一度生成されて提​​供されてから、後でコントローラーが呼び出されてからキャッシュされるためです。

ただし、HTML ページに JavaScript を含めることはできます。この JavaScript は、<%= @map.title %> によって提供される定数値で生成できます。

JavaScript をパーシャルに配置し、ページのタグにレンダリングします。

Bank of America が Web サイトでこれを行っているのを見たことがあります。ページ上の JavaScript 配列ですべてのアカウント トランザクションを生成します。

于 2012-04-12T21:15:12.790 に答える
0

を使用することを忘れないでくださいescape_javascript()

于 2012-04-12T21:32:26.393 に答える