Rails 3 ajax проблема рендеринга JavaScript - PullRequest
0 голосов
/ 22 января 2011

Я пытаюсь выполнить простой ajax-запрос в представлении rails (3.0.3) через link_to.

<%= link_to "like", toggle_author_likes_path(current_author, post), :remote => true %>

Идея состоит в том, что действие в переключателе LikesController # будет отображать некоторыеJavascript для изменения страницы после возврата запроса.Довольно простые вещи, верно?

Проблема, с которой я сталкиваюсь, заключается в том, что в действии, похоже, возникают проблемы с поиском нужного файла * .js.erb.Соответствующий фрагмент в действии переключения LikesController #:

respond_to do |format|
  format.html { redirect_to post_path(@post) }
  format.js
end

Когда я пытаюсь выполнить этот запрос, действие выполняется, но запрос отвечает 500 Internal Server Error.Текст ошибки:

Missing template likes/toggle with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:js, :html], :locale=>[:en, :en]}...

Я дважды и трижды проверил размещение моего файла _toggle.js.erb и уверен, что назвал его правильно, и содержимое допустимо (хотя это не так).важно, потому что это никогда не завершается).

Просто выполнение обычного GET без какого-либо причудливого ajax в файле js возвращает точно такую ​​же ошибку, поэтому велика вероятность, что проблема лежит где-то в цепочке рендеринга Rails.

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

Спасибо!

РЕДАКТИРОВАТЬ: Исправлена ​​проблема.Это была моя собственная глупая ошибка, я назвал представление как частичное с подчеркиванием перед ним.Удалено, и все это работает отлично.Идиот, идиот, идиот.

1 Ответ

0 голосов
/ 22 января 2011

Вам нужен отдельный шаблон с именем toggle.rjs Этот RailsCast , хотя и немного устаревший, все же объясняет, что поместить в файл toggle.rjs.

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