Перенаправление после ajax-запроса - PullRequest
2 голосов
/ 31 мая 2019

Я читал много постов о том, как Rails обрабатывает remote: true, но я до сих пор не понимаю, почему это происходит. Одна из моих форм - это удаленная форма, которая выглядит так:

<%= form_with model: @transfer, scope: :transfer, url: transfers_path, method: 'post', remote: true do |f| %>

И в моем create действии у меня просто есть:

def create
  @transfer = @account.transfers.build(transfer_params)
  respond_to do |format|
    if @transfer.valid?
      format.html { redirect_to pending_transactions_path }
    else
      flash.now[:error] = "An error occurred"
      format.js
    end
  end
end

Шаблон create.js.erb строго используется для обработки при сохранении @transfer ошибки, и я также попытался очистить его без кода. И по какой-то причине, когда я отправляю эту форму, она перенаправляет меня на pending_transactions_path.

Однако в другой части моего кода у меня есть запрос ajax, подобный этому:

$.ajax({
  method: "GET",
  url: "/handle_timeout"
});

И действие моего контроллера выглядит так:

def handle_timeout
  respond_to do |format|
    format.html { redirect_to pending_transactions_path }
  end
end

И это по какой-то причине не перенаправляет. В моем журнале Rails я вижу, что он перенаправляет:

10:19:18 web.1     | Redirected to http://localhost:3000/transactions/pending
10:19:18 web.1     | Completed 302 Found in 67ms (ActiveRecord: 50.6ms)
10:19:18 web.1     | Started GET "/transactions/pending" for ::1 at 2019-05-31 10:19:18 -0700
10:19:18 web.1     | Processing by TransactionsController#pending_transfers as */*

Мне пришлось последовать другому SO-ответу, чтобы заставить его перенаправить Ссылка на этот ответ: https://stackoverflow.com/a/17689223/3504731

Не ошибаюсь ли я, что remote: true - это то же самое, что и запрос $.ajax? Почему моя страница перенаправляется, когда я отправляю первую форму, но не перенаправляет, когда выполняется второй запрос ajax? remote: true делает Rails больше магии под капотом по сравнению с запросом ajax?

Я использую Rails 5.2.1. Любая идея по этому вопросу будет принята с благодарностью. Спасибо за чтение!

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