1

関連するコントローラーで使用される変数に基づいてビューのスパンを置き換える必要がある .js.erb ファイルがあります。呼び出しを機能させるための適切な表記法がわかりません。 @iコントローラーで割り当てられます。.js.erb 呼び出しは次のとおりです。

$("span#remove_name_" + <%= @i %>).html("<%= escape_javascript(render(:partial => 'remove_position'))%>");

置き換えたいスパンの名前はremove_name_42、たとえばです。

ありがとう。

4

1 に答える 1

2

コードのこの部分についてのみ説明します。$("span#remove_name_" + <%= @i %>)

二重拡張子を持つファイルがどのように機能するかを理解する必要があります。この場合、「.js.erb」タイプのファイルがあり、これはファイルが最初に erb によって解釈され、その結果がブラウザによって解釈される js ファイルになることを意味します。2 つの解釈は別々に行われます。

erb の解釈について: これはある種の「テキスト処理」にすぎないことに注意してください。何が追加されているかを段階的に理解しようとすると:

  1. あなたのコードは$("span#remove_name_" + <%= @i %>)
  2. @i 値は「example」です
  3. erb コードのこの部分を<%= @i %>値 if @i で置き換えます。これは「例」です
  4. 結果の js ファイルは次のようになります。$("span#remove_name_" + example)

あなたの js コードが 'example' という名前の変数を宣言し、結果のコード$("span#remove_name_" + example)が期待どおりであれば、問題ありません。

しかし、あなたの js コードが 'example' 変数を宣言しておらず、$("span#remove_name_example")id "remove_name_example" でスパンを検索しているため、このコードを期待している場合は、次のようにする必要があります:

  1. あなたのコードは$("span#remove_name_<%= @i %>")
  2. @i 値は「example」です
  3. erb コードのこの部分を<%= @i %>値 if @i で置き換えます。これは「例」です
  4. 結果の js ファイルは次のようになります。$("span#remove_name_example")

を削除し、文字列内に+移動した方法がわかり<%= @i %>ますか? 「テキスト処理」についてもう一度考えてみてください。erb は変数をその値で置き換えることに注意してください。

于 2013-05-23T23:24:57.393 に答える