Использование плагина автозаполнения пользовательского интерфейса jQuery в приложении Rails - PullRequest
0 голосов
/ 20 апреля 2011

Мне интересно использовать плагин jQuery UI для автозаполнения в моем приложении Rails.Количество возможных значений будет небольшим, поэтому я хотел сохранить их на стороне клиента.Итак, мой контроллер настроен следующим образом:

def index
  @tags = Tag.find(:all).map { |t| t.name }
end

И, на мой взгляд:

var tags = <%= @tags %>

Проблема в том, что это выглядит как:

var tags = [&quot;tag1&quot;,&quot;tag2&quot;];

Вместо:

var tags = ["tag1","tag2"] 

Что мне нужно сделать по-другому, чтобы перестать экранировать эти кавычки внутри моего массива тегов?

Ответы [ 3 ]

0 голосов
/ 21 апреля 2011

В вашем контроллере отсутствует html_safe - вот пример:

Контроллер

@keys = @categories.map { |x| x.name }   
@autocomplete_categories = @keys.to_json.html_safe

вид:

<script type="text/javascript">
$(document).ready(function() {
    var data = <%= @autocomplete_categories %>;
    $("#auto").autocomplete( { source: data } );
});
</script>
0 голосов
/ 21 апреля 2011

Я смог решить эту проблему, изменив код моего просмотра на:

<%= array_or_string_for_javascript(@tags) %>
0 голосов
/ 21 апреля 2011

Как насчет:

var tags = <%=raw @tags %>;

РЕДАКТИРОВАТЬ:

в вашем контроллере

@tags = Tag.find(:all).map(&:name).to_json

на ваш взгляд:

var tags = <%= @tags %>;

ЭтоТо же самое, что вы представили, но вы уверены, что он действителен и уверен (потому что избежал) json (+ запрос улучшен).

Я все еще спрашиваю о XSS + raw ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...