简体   繁体   中英

Save parameters between actions Rails

I have a controller, named OrdersController. And db table "Orders" with information about shop orders. In a index page (localhost/) I must show two buttons: today orders and orders in range (with two inputs).

First button should open a page with list of orders, created today (Date.current for example). Second button should open a page with list of orders, that was created in date range, specified in the input .

When I click on some order the details page is opens for it. There I can edit some fields of order and click "Update" button (it must update @order and redirect to (!)previous page - if it is today orders, then open a todays order. If it is a orders in a date range - then show orders created in range that was specified).

The question: what is the best practise to pass parameters between actions? How can I say to my "update" action where to redirect_to (to page with today orders or to page with orders in range) after updating? It must be a hiiden tag with params[:start_date] or something else?

The same is for the "back" button on the Order details page. It must return to the previous page (saving all the parameters that was passed for). I was thinking about

link_to 'Back', :back

But I heared it's not a good solution.

Thx!

I have used it in redirect_to not in link_to .

:back is a good option in update or create actions, since redirect is done through a GET, so when you POST to orders or PUT to orders/1 I suppose you will redirect user to orders/new or orders/1/edit .

But as you want to redirect to /orders maintaining your search page, your hidden field makes more sense, in app/views/orders/_form.html.erb inside the form block:

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

Then in your orders_controller in update or create actions:

redirect_to params[:redirect_url]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM