Могу ли я перенаправить запрос javascript на другое действие javascript? - PullRequest
3 голосов
/ 30 августа 2010

У меня есть контроллер комментариев с индексом и создание действий среди других. Оба эти действия соответствуют форматам html и js.

Всякий раз, когда я получал запрос на создание через ajax, я хотел бы добавить новый комментарий, а затем перенаправить на index.js, чтобы комментарии на экране обновлялись без перезагрузки страницы.

Такого рода вещи работают без проблем в Chrome. Но всякий раз, когда я пытаюсь сделать это в Firefox или IE, оказывается, что перенаправление из create.js попадает в index.html ...

Даже когда я заставляю перенаправление быть js:

redirect_to polymorphic_path([@commentable, :comments]), :format => 'js'

Это появляется в формате .html в Firefox и IE.

Есть идеи, что здесь может происходить?

1 Ответ

1 голос
/ 28 мая 2012

Существуют различные проблемы, связанные с тем, как браузеры по-разному обрабатывают 302 запроса. Некоторые теряют типы запросов, другие теряют метод запроса (пример заявки: http://trac.tools.ietf.org/wg/httpbis/trac/ticket/160).

Я бы предложил, чтобы вместо перенаправления на новый URL-адрес при использовании JS вы просто выполняли то же действие Так что-то вроде этого:

class CommentsController < ApplicationController
  def index 
    setup_for_index
    respond_to :html, :js
  end

  def create
    # Creation stuff...
    respond_to do |format|
      format.html {redirect_to :action => :index}
      format.js do
        setup_for_index
        render :action => :index
      end
    end
  end

  private

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