2

このテキストが javascript/jquery に渡されないのはなぜですか? @i[:error]間違いなく文字列が含まれているので、コンソールに出力できます。

js.erb ファイル -

<% if @i[:error] != "" %>
<% puts "--> " + @i[:error]  %>
#--> error
#Validation error(s):
#-  Item Is not defined or blank. # that's the error string in @i[:error]

$(function() {
$("#error_message").attr("class", "message_error");
$('#error').text("<%= @i[:error]%>"); #Not working for @i[:error]
#$('#error').text("<%= "#{@i[:error]}"%>");#Not working for @i[:error]

#$('#error').text("Test"); #This is working
#$('#error').text("<%= "?????"%>"); #This is working
});
<% else %>
........#fine here
<% end %>
4

2 に答える 2

2

はい、おそらく改行のせいです。を使用して修正できますescape_javascript

JavaScript セグメントのキャリッジ リターンと一重引用符と二重引用符をエスケープします。

そう:

$('#error').text("<%= escape_javascript(@i[:error]) %>");
于 2012-05-13T13:28:09.283 に答える
0

デバッガーが何を言っているのかを指定すると、問題を理解しやすくなります。erb ビューのこのコードは正常に動作します。

<% @i = {} %>
<% @i[:error] = "Error" %>  

<% unless @i[:error].blank? %>
  <script>
    $(document).ready(function() {
      $('#error').text('<%= @i[:error] %>'); // Works fine
    });
  </script>
<% end %>

文字列の空は空白でチェックされることに注意してください。!=演算子を使用するよりもはるかに見栄えが良いと思います。

于 2012-05-13T12:44:56.607 に答える