Рендеринг HTML частично с помощью JS - PullRequest
0 голосов
/ 30 января 2019

Я хочу сделать html частичным с помощью js response_to

Вот мой контроллер:

class SearchesController < ApplicationController
  def index
    @users = User.ransack(first_name_or_last_name_cont: params[:query]).result(distinct: true)
    @teams = Team.ransack(name_cont: params[:query]).result(distinct: true)
    
    respond_to do |format|
      format.js {}
      format.json {}
      @users = @users.limit(5)
      @teams = @teams.limit(5)
    end
    
  end
end

Вот мой index.js.erb:

$('<%= j render :partial => 'result_list' %>')

Это работает, но не отображает HTML правильно в моем раскрывающемся списке поиска

У меня есть что-то вроде этого:

$('
\n\nUsers\n<\/span>\n\n\n<\/i>\n<\/span>\nCharlotte Marie<\/span>\n<\/a>\n\n\n<\/i>\n<\/span>\nMatrice .io<\/span>\n<\/a>\n\n\n\"Maboukra\"\n<\/span>\nMichael Aboukrat<\/span>\n<\/a>\n\n\n<\/i>\n<\/span>\nConstance Albanel<\/span>\n<\/a>\n\n\n\"Malberte\"\n<\/span>\nMatthieu 

Пожалуйста, дайте мне знать правильный код JS

1 Ответ

0 голосов
/ 31 января 2019

Вы рендерите весь HTML-фрагмент непосредственно в тег $ (), что неверно.Имейте в виду, что Rails загружает Javascript в файл js.erb.

Вместо этого вы должны загрузить его в другой элемент HTML, например:

<span id="container"></span>

, а затемсделайте HTML внутри него частичным, который вы хотите визуализировать, поэтому в index.js.erb вы должны написать:

$('#container').html("<%= j render partial: 'result_list' %>");
...