Подтвердить что ты не робот

Как я могу перезагрузить текущую страницу в Ruby on Rails?

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

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

Спасибо

4b9b3361

Ответ 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"