A little gem for supporting back history in your applicaton. It uses a simple request-parameter 'back' with every back-path separated with a '|'.
Add this line to your application's Gemfile:
gem 'backable'And then execute:
$ bundleTo use this plugin. You can build up the backable stack via the controller method backable_push.
To pass the history to the next page remember to use backable_url_for instead of url_for.
You can configure the Backable.fallback_url, which is called when nothing is on the stack.
Backable.fallback_urlclass FooBarsController < ApplicationController
def index
backable_push([:foo_bars]) #< push the back-url. This can be a string url
..
end
def update
@foo_bar = FooBar.find(params[:id])
if @foo_bar.update(params[:foo_bar])
redirect_to backable_back_path, notice: "Data is saved"
end
end
endAvailable controller methods:
| Method | description |
|---|---|
| backable_push | Pushes the given url to the stack |
| backable_url_for | url_for replacement which includes the 'back' parameter |
| backable_back_path | Returns the path to the previous page |
| backable_param | Returns the back parameter for the given stack (internal method) |
| backable_history | Returns and array of the previous paths |
| backable_future | Returns the future paths (pushed on the stack in this request) |
To make this all work you need to replace all links in your application (link_to) to backable_link_to
<%= backable_link_to( [:edit, @item]) %>To use this with buttons etc.. there's also the backable_url_for method
You can simple add a back-button via backable_link_to_back. This link goes back to previous page in the stack.
<%= backable_link_to_back %>To remember your back-stack in forms you should use the backable_form_item
<%= backable_form_item %>Available view-helper methods:
| Method | description |
|---|---|
| backable_url_for | url_for replacement which includes the 'back' parameter |
| backable_back_path | Returns the path to the previous page |
| backable_form_item | A hidden form element that includes the 'back' parameter |
| backable_link_to | link_to replacement which includes the 'back' parameter |
| backable_link_to_back | A link_to call to the previous page (including the text t(backable.back)) |
| backable_history | Returns and array of the previous paths |
| backable_future | Returns the future paths (pushed on the stack in this request) |
The gem is available as open source under the terms of the MIT License.