Как я могу перезагрузить текущую страницу в Ruby on Rails? - PullRequest
43 голосов
/ 19 сентября 2011

В настоящее время у меня есть всплывающее окно для входа в мою панель заголовков, которая находится на каждой странице моего сайта. Я хочу иметь возможность перезагрузить текущую страницу, на которой находится человек, после успешного входа в систему. Как мне это сделать в контроллере?

def create
  #declaring and defining user variable stuff
  if user.save
    #reload current page <--how do I do this?
  end
end

Спасибо

Ответы [ 6 ]

49 голосов
/ 19 сентября 2011

Для моего приложения я использую redirect_to :back, и это делает свое дело. Тем не менее, я сомневаюсь, что это может иметь ошибку в случаях не общего использования (пользователь пришел со специальной страницы?), Но я пока не нашел ее в своем приложении.

40 голосов
/ 29 октября 2013

Если вы ищете способ обновить страницу (обычно redirect_to :back) с помощью XHR-запроса, вам не нужно искать способ изменить тип ответа - просто попросите страницу перезагрузитьсо встроенным JS.

format.js {render inline: "location.reload();" }

Как и упоминается Елена , это должно идти в блоке response_to, например:

respond_to do |format|
  format.js {render inline: "location.reload();" }
end
13 голосов
/ 05 апреля 2017

В Rails 5 redirect_to :back улучшено на:

    redirect_back(fallback_location: root_path)
12 голосов
/ 05 июня 2014

Archonic ответ выше работал для меня.Однако в Rails 3 мне пришлось поместить это в блок respond_to, чтобы избежать ошибки «ArgumentError (слишком мало аргументов)»:

respond_to do |format|
  format.js {render inline: "location.reload();" }
end
9 голосов
/ 24 июня 2017

Начиная с Rails 5 (или, возможно, более старых версий), у вас есть метод request.referrer. Вы просто перенаправляете с контроллера на реферер, и он открывает страницу, с которой поступил запрос.

redirect_to request.referrer, notice: "You're being redirected"

3 голосов
/ 16 ноября 2018

В Rails 5 введена альтернативная функция:

redirect_back(fallback_location: root_path)

Он перенаправляет обратно всякий раз, когда известен HTTP_REFERER. В противном случае он перенаправляется на адрес fallback_location.

redirect_to :back устарел в Rails 5.0 https://github.com/rails/rails/pull/22506 и удален с Rails 5.1

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