Проблемы с UJS

Я успешно добавил UJS в одном приложении rails (3.2.6). Добавление:remote => true к моему тегу формы позволяет мне делать ajax-вызовы к моим js.erb-файлам для динамической загрузки div, ect..

Но в другом приложении на той же машине (Ubuntu 12.0.4) кажется, что движок ujs не работает. Я всегда получаю шаблон не найден, потому что форма отправляет формат => HTML, а не JS. Если я заставлю форму использовать формат js (format => 'js'), она просто визуализирует файл js.erb, а не вызывает его через ajax.

В application.js я включил правильные заголовки со следующим:

//= require jquery
//= require jquery_ujs
//= require_tree .

Файлы javascript включаются, когда я на самом деле перехожу на основную домашнюю страницу, которая использует макет приложения, который включает в себя вышеупомянутые ссылки javascirpt. Форма на странице выглядит следующим образом:

<%= form_tag list_path, :remote => true, :id => 'frmBookResults', :method => :post do %>

Но хотя он содержит:remote => true и есть маршрут, установленный для list_path (маршрут работает, потому что, если я изменю list.js.erb на list.html.erb, представление рендерится), и метод в контроллере чтобы обработать запрос (def list....end), последующий list.js.erb игнорируется, и я получаю ошибку "шаблон не найден", потому что rails обрабатывает запрос формы как html, что я могу подтвердить в журнале.

Я искал везде, где мог найти решение, но не могу понять, почему мой пользовательский интерфейс не работает для этого конкретного приложения, когда он почти идентичен моему рабочему приложению, гемсету, версиям и конфигурации.

Я нашел несколько других статей о переполнении стека, где у людей была та же самая проблема, но окончательного, рабочего ответа не было дано.

Любая помощь или направление будет принята с благодарностью.

1 ответ

Решение

Это была действительно проблема с разрывом Ajax. Триггер onkeyup, который я использовал для отправки формы, был следующим:

<%= form_tag list_path, :id => 'frmBookResults', :remote => true do %>
    <input id='keyword' type='text' onkeyup='document.forms["frmBookResults"].submit();'/>
<% end %>

Обратите внимание на следующее:

document.forms["frmBookResults"].submit();

Очевидно, что отправка формы через javascript была проблемой, потому что, когда я обновил onkeyup для использования отправки jquery, как описано ниже, сработал rails ujs и сработали вызовы ajax в мой list.js.erb:

onkeyup="jQuery('#frmBookResults').submit()"

Спасибо за все отзывы mccanff! Ваш вклад вместе с другими разработчиками из группы rails в LinkIn помог мне, наконец, решить мою проблему.

Другие вопросы по тегам