У меня есть страница, которая перечисляет все проекты, которые имеют поддающиеся сортировке заголовки и разбиение на страницы.
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.
В ваших мерах редактирования храните запрашивающий URL в сессионном хэш, который доступен для нескольких запросов:
session[:return_to] ||= request.referer
Затем перенаправляйте к нему в вашем обновлении действий, после успешного сохранения:
redirect_to session.delete(:return_to)
Вот как мы делаем это в нашем приложении
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
.