Я читал много постов о том, как 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. Любая идея по этому вопросу будет принята с благодарностью. Спасибо за чтение!