Rails History Plugin is a Ruby on Rails plugin that stores user actions (i.e. URLs that the user has recently visited).
It avoids storage of POST and AJAX requests, and it provides a manual way to specify which actions not to store.
Unpack into the vendor/plugin and that should be it.
In your app/controllers/application_controller.rb, add a history line like this:
class ApplicationController < ActionController::Base
history :default => "http://default.url.com/",
:max => 10
The history function accepts a hash of options
:default, the default URL to redirect
:max, the maximum locations to remember (five by defaults).
None of the parameters are required. If somebody knows of a better way to obtain the default URL, he is welcomed to tell me how.
You can use the method history_skip in your controller if you want to avoid certain location to be stored in the history. By default, action resulting from a POST, PUT, DELETE request or an Ajax request are not stored in the history.
class FooController < ApplicationController
# I will not be stored in the history
In your actions, you can then use the following methods:
last_location: returns the last visited location, can be used with one numeric argument precising how many locations to go back in the history (1 by default),
peek_last_location: like last_location but don't remove it from the history,
redirect_back: redirect the user to the last location in history, it takes the same arguments as last_location,
store_location(force = false): stores the current location in the history, set force parameter to true to store location even if it would be skipped.
Note that if you want to use the plugin to create a "back" link on a page, you must go back two times. For example, using this controller
class HistoryController < ApplicationController
I'll try to explain clearly why. Let's say that in your bar view, you create a back link wich links to the back action. Now a user visits foo then bar. What you want is your user being redirected to foo when clicking your "back" link. Now your user hits the link. The controller will call the back action. From its point of view, you are in the back action so going back one time would take you to the bar action.
What's New in This Release:
· This release fixes a bug where a user variable was stored in a class variable instead of a session one, so a user going back would make another one skip a page in its history.
· The plugin no longer stores PUT and DELETE requests.
· A peek_last_location method was added to look at the history without modifying it, and a "force" parameter was added to the store_location method to force storing of a location even if it would normally be skipped.