Redirecting from CRUD actions to one of many entry points
When using scaffolding each CRUD action usually has one entry point, the index action. If your CRUD actions (new/create, edit/update and destroy) have multiple entry points which may be the case if you allow editting records from an admin UI (/admin/documents/index), the public UI (/documents/index) and maybe a search UI.
In this case you need to know where to redirect the user back to.
def bookmark_page session[:bookmark] = request.url end def current_bookmark session[:bookmark] end def redirect_to_bookmark redirect_to current_bookmark || root_url end
We can called boomark page for any entry point to store the URL and then redirect back to the bookmarked URL in one of our CRUD actions.
def index @documents = Document.all bookmark_page end
We are then redirect back to our entry point, for example:
def update if @document.update_attributes(params[:document]) redirect_to_bookmark else render :action => :edit end end
Note: If you bookmark a POST request, such as search results, it will also need to be accessible with a GET request.