sinatra-redirect-with-flash provides redirect helper that can set proper flash (rack-flash) before the redirection
Ruby
Failed to load latest commit information.
lib/sinatra get rid of jeweler Jan 2, 2014
test get rid of jeweler Jan 2, 2014
.gitignore
Gemfile get rid of jeweler Jan 2, 2014
LICENSE initial commit Jan 28, 2010
README.md add build status badge to README Oct 4, 2014
Rakefile get rid of jeweler Jan 2, 2014
sinatra-redirect-with-flash.gemspec get rid of jeweler Jan 2, 2014

README.md

Sinatra Extension: redirect with flash

Build Status

sinatra-redirect-with-flash provides redirect helper that can set proper flash (rack-flash3 or sinatra-flash) before the redirection.

In fact, every time you set a flash parameter the very next step is often to perform your redirect:

post '/posts/?' do
  @post = Post.create(params)
  flash[:notice] = 'The post was successfully created'
  redirect "/posts/#{@post.id}"
end

With sinatra-redirect-with-flash you can do one-line redirects. For instance, to rewrite the above example:

post '/posts/?' do
  @post = Post.create(params)
  redirect "/posts/#{@post.id}", notice: 'The post was successfully created'
end

Installation

If you use bundler, simply specify sinatra-redirect-with-flash as a dependency in a Gemfile in your project's root:

gem 'rack-flash3'
gem 'sinatra-redirect-with-flash'

and run bundle install.

Otherwise install the gem as usual:

[sudo] gem install sinatra-redirect-with-flash

Example

require 'rubygems'
require 'sinatra'
require 'rack-flash'
require 'sinatra/redirect_with_flash'

enable :sessions

post '/sessions/new' do
  redirect '/secret', notice: 'Logged in'
  # predefined keys are: :notice, :error, :warning, :alert, :info, :success
end

get '/foo' do
  redirect '/bar', 301, notice: 'redirect with 301 code'
end

get '/archive' do
  redirect '/posts/', flash: { my_msg: 'Moving on!' }      
end

Note that if your application subclasses Sinatra::Base (modular app), you have to register the extension in your subclass:

helpers Sinatra::RedirectWithFlash

Requirements

Either rack-flash3 or sinatra-flash.