Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Rails plugin to quickly make named routes for non-RESTful actions.

branch: master

Fetching latest commit…


Cannot retrieve the latest commit at this time

Octocat-spinner-32 lib
Octocat-spinner-32 spec
Octocat-spinner-32 tasks
Octocat-spinner-32 .gitignore
Octocat-spinner-32 LICENSE
Octocat-spinner-32 README
Octocat-spinner-32 Rakefile
Octocat-spinner-32 init.rb
Octocat-spinner-32 install.rb
Octocat-spinner-32 uninstall.rb
Static Actions

This plugin will allow you to quickly create non-RESTful named routes using "map.static_actions". This way you can truly get rid of that generic ":controller/:action" route.


If you are running edge rails you can install the plugin straight from the repository:

	script/plugin install git://

Otherwise you can install it with this command:

	git clone --depth=1 git:// vendor/plugins/static_actions


Let's say you have a controller called "about" which has "index", "privacy", and "license" actions. This is a non-RESTful controller and usually requires the generic ":controller/:action" route. Instead we will use this plugin's static_actions method to generate named routes!

	map.static_actions :about, [:index, :privacy, :license]

That is the same as doing this.

	map.about_index 'about', :controller => 'about', :action => 'index'
	map.about_privacy 'about/privacy', :controller => 'about', :action => 'privacy'
	map.about_license 'about/license', :controller => 'about', :action => 'license'

It also includes a with_format named route for each action.

	map.about_index_with_format 'about.:format', :controller => 'about', :action => 'index'
	map.about_privacy_with_format 'about/privacy.:format', :controller => 'about', :action => 'privacy'
	map.about_license_with_format 'about/license.:format', :controller => 'about', :action => 'license'

Now you have 6 named routes you can use in your view.

	<%= link_to "Privacy", about_privacy_path %>
	<%= link_to "License PDF", about_license_with_format_path(:pdf) %>

If you just have a single action, you can use the singular static_action method which doesn't take an array.
	map.static_action :about, :privacy

If you don't want the controller name to be in the named route or path, you can prefix the method with "root_".

	map.root_static_actions :about, [:index, :privacy, :license]
This will generate the following routes.
	map.root :controller => 'about'
	map.privacy 'privacy', :controller => 'about', :action => 'privacy'
	map.license 'license', :controller => 'about', :action => 'license'
	map.privacy_with_format 'privacy.:format', :controller => 'about', :action => 'privacy'
	map.license_with_format 'license.:format', :controller => 'about', :action => 'license'

Happy routing.


Copyright (c) 2008 Ryan Bates, released under the MIT license
Something went wrong with that request. Please try again.