I’m curious if anyone has a better, more RESTful implementation of the
usual
blog/CMS methodology. I use REST for my admin controllers but
I’m not really sure if I’m actually exposing the record/resource or an
interpretation of it [as the front page does].
Here’s a quick mockup of what I’ve been using in routes.rb
ActionController::Routing::Routes.draw do |map|
Content URLs
map.index “/”, :controller => “content”, :action => “index”
map.oops “/oops”, :controller => “content”, :action => “oops” # The
catcher_url redirects here as a 404, kinda.
map.entry “/entry/:id/:title”, :controller => “content”, :action =>
“entry”
map.archives “/archives”, :controller => “content”, :action =>
“archives”
map.categorized “/archives/:category”, :controller => “content”,
:action
=> “categorized”
The page route needs to be just before the catchall so it doesn’t
try to
handle the admin pages.
Admin URLs
map.admin “/admin”, :controller => “admin/common”, :action => “index”
map.resources :categories, :controller => “admin/categories”,
:path_prefix
=> “/admin”, :name_prefix => “admin_”, :member => {:delete => :delete}
map.resources :entries, :controller => “admin/entries”, :path_prefix
=>
“/admin”, :name_prefix => “admin_”, :member => {:delete => :delete,
:publish
=> :post, :detach => :delete, :detag => :delete}, :collection =>
{:search =>
:get, :categorized => :get}
map.resources :pages, :controller => “admin/pages”, :path_prefix =>
“/admin”, :name_prefix => “admin_”, :member => {:delete => :delete,
:publish
=> :post, :detach => :delete}, :collection => {:search => :get}
map.resources :users, :controller => “admin/users”, :path_prefix =>
“/admin”, :name_prefix => “admin_”
map.resources :sessions, :controller => “admin/session”, :path_prefix
=>
“/admin”, :name_prefix => “admin_”, :collection => {:delete => :delete}
map.resources :addresses, :controller => “admin/addresses”,
:path_prefix
=> “/admin”, :name_prefix => “admin_”, :member => {:delete => :delete},
:collection => {:search => :get, :email => :get}
map.admin_settings “/admin/settings”, :controller => “admin/settings”,
:action => “index”
map.page “/:url”, :controller => “content”, :action => “page”
Good old catchalls!
map.catcher “/*path”, :controller => “content”, :action => “catcher”
end
Should I somehow be including the content URLs in on the REST goodness?
To
me, they’re two different apps kinda. The RESTful admin app and the
regular
reader one. Is this crazy though?
RSL