У меня есть частичный _searchresults.html.erb, который должен быть сохранен в UTF-8.
Тогда у меня есть некоторый код javaxript / AJAX для рендеринга этого частичного:
<% # encoding: utf-8
%>
stopLoading();
$('#searchresults').html('<%= escape_javascript( render("shared/searchresults") ) %>');
Каждый раз, когда я пытаюсь получить доступ к соответствующей странице, я получаю:
ActionView::Template::Error (invalid byte sequence in UTF-8):
1: <% # encoding: utf-8
2: %>
3: stopLoading();
4: $('#searchresults').html('<%= escape_javascript( render("shared/searchresults") ) %>');
app/views/searches/index.de.js.erb:4:in `_app_views_searches_index_de_js_erb__423966875_35661432__279394272'
Все мои файлы имеют кодировку UTF-8, и все соответствующие файлы * .erb имеют магический комментарий # encoding: utf-8
.
Что я могу с этим поделать?
EDIT:
Я сейчас пытаюсь избежать js вручную:
def my_js_escape( js )
if( js )
ret = js.force_encoding( 'utf-8' )
ret.gsub!( /\\/u, '\\\\' )
#ret.gsub!( /<\//u, '<\/' ).force_encoding( 'utf-8' )
#ret.gsub!( /"/u, '\\"' ).force_encoding( 'utf-8' )
#ret.gsub!( /'/u, "\\'" ).force_encoding( 'utf-8' )
#/(\\|<\/|\r\n|[\n\r"'])/
return ret
else
''
end
end
Ruby выдает мне ту же ошибку при каждом вызове gsub, даже если я добавлю .force_encoding во все строки замены.