Ruby – Rails – 将文本传递给javascript

为什么不将这个文本传递给javascript / jquery。 @i[:error]肯定有一个字符串,我可以在控制台上打印。

js.erb文件 –

   " + @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(""); #Not working for @i[:error] #$('#error').text("");#Not working for @i[:error] #$('#error').text("Test"); #This is working #$('#error').text(""); #This is working });  ........#fine here  

是的,这可能是因为换行了。 您可以使用escape_javascript修复它。

转义回车以及JavaScript段的单引号和双引号。

所以:

 $('#error').text("<%= escape_javascript(@i[:error]) %>"); 

如果您指定调试器所说的内容,则更容易理解该问题。 这个erb视图的代码工作正常:

 <% @i = {} %> <% @i[:error] = "Error" %> <% unless @i[:error].blank? %>  <% end %> 

请注意空白检查字符串的空白? 方法,我认为它看起来比使用!=运算符更好。