2013-12-02 5 views
1

У меня есть контроллер с именем OrdersController. И db table «Заказы» с информацией о заказах магазина. На индексной странице (localhost /) я должен показать две кнопки: сегодня заказы и заказы в диапазоне (с двумя входами).Сохранение параметров между действиями Рельсы

Первая кнопка должна открыть страницу со списком заказов, созданных сегодня (например, Date.current). Вторая кнопка должна открыть страницу со списком заказов, которая была создана в диапазоне дат, указанном на входе.

Когда я нажимаю на какой-то заказ, открывается страница с подробными сведениями. Там я могу отредактировать некоторые поля заказа и нажать кнопку «Обновить» (он должен обновить @order и перенаправить на (!) Предыдущую страницу - если это сегодня заказы, а затем открыть текущий заказ. Если это заказы в диапазон дат - затем показывать заказы, созданные в указанном диапазоне).

Вопрос: какова наилучшая практика передачи параметров между действиями? Как я могу сказать моему действию «обновления», где redirect_to (на странице с сегодняшними заказами или на странице с заказами в диапазоне) после обновления? Это должен быть hiiden tag с параметрами [: start_date] или что-то еще?

То же самое касается кнопки «Назад» на странице сведений о заказе. Он должен вернуться на предыдущую страницу (сохраняя все параметры, которые были переданы для). Я думал о

link_to 'Back', :back 

Но я слышал, что это нехорошее решение.

Thx!

+0

Если «параметры» являются простыми параметрами строки запроса в URL-адресе, вы можете использовать сеанс для хранения предыдущего местоположения и затем перенаправить пользователя на него после обновления. Есть ряд вопросов, связанных с этим. Вот один пример: http://stackoverflow.com/questions/16630652/redirect-to-previous-page-wherever-it-is-directed-to-the-login-page – steakchaser

ответ

1

Я использовал его в redirect_to не в link_to.

:back является хорошим вариантом в update или create действий, так как перенаправление осуществляется через GET, поэтому, когда вы публикуете orders или PUT к orders/1 Я полагаю, что вы будете перенаправлять пользователя orders/new или orders/1/edit.

Но, как вы хотите перенаправить /orders поддержания страницы поиска, ваши скрытые поля имеет больше смысла, в app/views/orders/_form.html.erb внутри формы блока:

<%= hidden_field_tag :redirect_url, request.referrer %> 

Затем в orders_controller в обновлении или создавать действия:

redirect_to params[:redirect_url] 
+0

О, да :) Я не думал по тому пути. Благодаря! –

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