Skip to content
This repository

HTTPS clone URL

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…

Octocat-spinner-32-eaf2f5

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
README
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.


Installation
------------

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

	script/plugin install git://github.com/ryanb/static_actions.git

Otherwise you can install it with this command:

	git clone --depth=1 git://github.com/ryanb/static_actions.git vendor/plugins/static_actions


Instructions
------------

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.