Как я могу перезагрузить текущую страницу в Ruby on Rails?
В настоящее время у меня есть всплывающее окно входа в панель заголовка, которое находится на каждой странице моего веб-сайта. Я хочу, чтобы иметь возможность перезагрузить текущую страницу, на которой человек включен после успешного входа в систему. Как это сделать в контроллере?
def create
#declaring and defining user variable stuff
if user.save
#reload current page <--how do I do this?
end
end
Спасибо
Ответы
Ответ 1
Для моего приложения я использую redirect_to :back
, и это делает трюк. Тем не менее, я сомневаюсь, что это может привести к ошибке в случае не общего использования (пользователь пришел со специальной страницы?), Но я пока не нашел его в своем приложении.
Ответ 2
Если вы ищете способ обновления страницы (обычно redirect_to :back
) с помощью запроса XHR, вам не нужно искать способ изменить тип ответа - просто сообщите, чтобы страница перезагрузилась с встроенным JS.
format.js {render inline: "location.reload();" }
Как Elena, это должно идти в блоке response_to, например:
respond_to do |format|
format.js {render inline: "location.reload();" }
end
Ответ 3
Archonic ответ выше работал у меня. Однако в Rails 3 мне пришлось поместить это в блок respond_to
, чтобы избежать ошибки ArgumentError (слишком мало аргументов):
respond_to do |format|
format.js {render inline: "location.reload();" }
end
Ответ 4
В Rails 5 redirect_to :back
улучшен:
redirect_back(fallback_location: root_path)
Ответ 5
Так как Rails 5 (или, может быть, более старые версии), у вас есть метод request.referrer
. Вы просто перенаправляете с контроллера на реферер и открываете страницу, откуда пришел запрос.
redirect_to request.referrer, notice: "You're being redirected"