<% puts "--> " + @i[:error] %>#--> error#Validation error(s):#- Item Is n" />

Ruby - Rails - Передача текста в JavaScript

ruby ruby-on-rails-3

289 просмотра

2 ответа

1196 Репутация автора

Почему этот текст не передается в 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 %>
Автор: Kapish M Источник Размещён: 13.05.2012 12:15

Ответы (2)


0 плюса

1911 Репутация автора

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

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

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

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

Автор: makaroni4 Размещён: 13.05.2012 12:44

1 плюс

39724 Репутация автора

Решение

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

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

Так:

$('#error').text("<%= escape_javascript(@i[:error]) %>");
Автор: Mischa Размещён: 13.05.2012 01:28
Вопросы из категории :
32x32