2014-10-06 3 views
0

Я новичок в Rails и ценю любое понимание! Обновление версии Rails или Ruby не является вариантом, мне требуется использовать текущую версию моего клиента.Rails + AJAX возвращает больше HTML, чем ожидалось

Рубин Версия: 1.9.3-Р194, Рельсы версия: 3.2.18

я загружаю динамического контента HTML с помощью вызова JavaScript/JQuery Ajax. Все работает нормально, когда я делаю вызов Ajax изнутри app/assets/javascripts/application.js. Вот вызов:

$.ajax({ 
     url: '/search/login', 
     cache: true, 
     success: function(html){ 
      console.log('SUCCESS: ', html); 
     } 
    }); 

Переменная реакция называется HTML содержит все HTML внутри /search/login.html.erb

Однако, если я перееду, что точный вызов другому JavaScript файла, такие как app/assets/javascripts/search/jh.js, все работает нормально, за исключением того, что HTML-код возвращается LOT больше, чем ожидалось. Он фактически содержит все дерево HTML DOM, от <DOCTYPE> до </html> в дополнение к содержимому из /search/login.html.erb.

Может кто-то, пожалуйста, помогите мне понять, почему это происходит?

+1

вы попробовали 'layout: false' в вашем выражении рендера в контроллере? Это скорее проблема контроллера, чем проблема jQuery. – engineersmnky

+0

Можете ли вы отправить код обоих методов: 'login' и' jh' из контроллера поиска? – Surya

+0

@engineersmnky вы прибивали его! Огромное спасибо. Если вы оставите свой комментарий в качестве ответа, я его выберу. Еще раз спасибо! – ndcomix

ответ

2

Необходимо указать, что вы не хотите отображать макет для этого типа ajax-вызова, иначе Rails будет рассматривать его как стандартный запрос просмотра, включая макет приложения или шаблона. Для этого вам просто нужно добавить следующее рендер действия в контроллере

render layout: false 

Это сказать Rails просто обработать файл html.erb без макета приложения или другого шаблона, указанного для этого контроллера.

Смежные вопросы