2011-01-06 3 views
5

В представлении списка моего приложения я могу просмотреть список записей или развернуть и отредактировать/обновить запись. После обновления я хочу вернуться непосредственно к списку, минуя пару промежуточных страниц, но я не просто хочу, чтобы link_to(:action => list) - есть разбиение на страницы. Я хочу вернуться к точной странице «Список», с которой я пришел. Каков наилучший способ? Пропустите скрытый arg где-нибудь с номером страницы? Есть ли элегантный способ достичь этого?Как вернуться '2 уровня?

ответ

7

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

В вашем действии редактирования вы можете сохранить предыдущую страницу в сеансе. Затем в вашем действии обновления переадресуйте его.

class MyController < ApplicationController 

    def edit 
    session[:prev_url] = request.referer 
    end 

    def update 
    redirect_to session[:prev_url] 
    end 

end 
2

В качестве альтернативы использованию сеанса вы можете провести реферирование посредством действий, используя скрытое поле формы.

class MyController < ApplicationController 

    def edit 
    @prev_url = request.referer 
    end 

    def update 
    redirect_to params[:prev_url] 
    end 

end 

Форма использования hidden_field:

f.hidden_field :prev_url, :value => @prev_url 

Если вы не хотите носить с собой весь реферера URL вы также можете сделать то же самое с параметром страницы вместо и добавить параметр в URL в update действий. Я также ожидаю, что помощники URL-адресов Rails будут принимать параметры.

Смежные вопросы