2012-05-13 2 views
2

Почему этот текст не передается javascript/jquery.? @i[:error] определенно имеет в себе строку, я могу напечатать это на консоли.Ruby - Rails - передать текст javascript

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 %> 

ответ

1

Да, это, вероятно, из-за разрыва строки. Вы можете исправить это, используя escape_javascript.

Исключает возврат каретки и одинарные и двойные кавычки для JavaScript сегментов.

Итак:

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

Да, это то, что было. это вызвало проблему. Вы решили это. –

0

Если вы укажете, что отладчик говорит, что это было бы легче понять проблему. Этот код Еврорадио просмотров прекрасно работает:

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

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

Обратите внимание, что пустота строки проверяется пустой? метод, думаю, он выглядит намного лучше, чем с помощью ! = Оператор.

+0

Не знаю, что это неправильно там. Я попробовал изменить, но не повезло. –

+0

Может ли это быть из-за разрыва строки в строке, которую javascript не может принять? –

Смежные вопросы