Как перенаправить к предыдущей странице в Ruby on Rails?

У меня есть страница, которая перечисляет все проекты, которые имеют поддающиеся сортировке заголовки и разбиение на страницы.

path:
/projects?order=asc&page=3&sort=code

Я принимаю решение отредактировать один из проектов

path:
projects/436/edit

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

Я видел link_to (: назад), и думал что: назад может работать в redirect_to (: назад), но это не, идут.

puts YAML::dump(:back) 
yields the following:
:back 

Любые идеи о том, Как я мог заставить это работать. Это походит на проблему, которая была бы легко решена, но я плохо знаком с RoR.

182
задан Lucio 29 August 2015 в 20:31
поделиться

2 ответа

В ваших мерах редактирования храните запрашивающий URL в сессионном хэш, который доступен для нескольких запросов:

session[:return_to] ||= request.referer

Затем перенаправляйте к нему в вашем обновлении действий, после успешного сохранения:

redirect_to session.delete(:return_to)
319
ответ дан 23 November 2019 в 06:03
поделиться

Вот как мы делаем это в нашем приложении

def store_location
  session[:return_to] = request.fullpath if request.get? and controller_name != "user_sessions" and controller_name != "sessions"
end

def redirect_back_or_default(default)
  redirect_to(session[:return_to] || default)
end

Таким образом, вы храните только в последнем запросе в : return_to сеанс параметра, поэтому все формы, даже когда несколько раз Опубликовано будет работать с : return_to .

33
ответ дан 23 November 2019 в 06:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: