public
Description: Rails plugin to quickly make named routes for non-RESTful actions.
Homepage:
Clone URL: git://github.com/ryanb/static_actions.git
static_actions / README
100644 65 lines (37 sloc) 2.485 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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