Как визуализировать JS и перебирать массив с помощью Rails Controller

#javascript #jquery #ruby-on-rails #ruby

#javascript #jquery #ruby-на-рельсах #рубиновый

Вопрос:

У меня есть кнопка в представлении, которая запускает действие контроллера, которое запускает кучу вещей и возвращает массив строк (каждая строка отформатирована как div ex; «Привет»). Затем я хочу взять этот массив и добавить каждый элемент на страницу, на которой была нажата кнопка.

Метод контроллера:

 def test
    @id = params[:id]
    if @id == 'run'
        @res = Preflight.run
        respond_to do |format|
            format.js {render :js => 'run'}
        end
    else 
        render @id
    end
end
 

запустите файл .js.erb:

 $('#header3').show();
$('#header2').hide();
<%= puts 'made it to the js file' %>
<% @res.each do |line| %>
    $('#results').append(<%= line %>);
<% end %>
 

Я знаю, что @res возвращает массив по назначению, я не могу запустить JS. Есть идеи? Он не запускает show / hide, поэтому я думаю, что ошибка связана с тем, как я пытаюсь вызвать файл js, но я не уверен, что я здесь делаю неправильно.

Комментарии:

1. можете ли вы показать нам, как выглядит js, который появляется в вашем поле зрения после нажатия кнопки?

2. Вам действительно нужно визуализировать файл JavaScript с использованием erb?

3. Вероятно, нам понадобится вывод из консоли javascript вашего браузера. Как вы выполняете этот JavaScript в браузере? Когда запрос ajax возвращает строку визуализированного кода javascript, вы ее оцениваете?

Ответ №1:

Используете ли вы эту remote: true опцию в своем HTML, когда вызываете test действие?

Комментарии:

1. Нет, я использую ajax.

Ответ №2:

Помните, что когда вы хотите вывести строку JS, вам нужно заключить ее в кавычки:

 $('#results').append("<%= @res.join() %>");