On Fri, Mar 27, 2009 at 2:52 PM, Kennard Smith <[email protected]> wrote:
>
> Thanks for the reply
> unfortunately the default routes don't work with resources
You're right, you can't do it with the nice little resource helpers.
But you can do it yourself with matching. I had this same issue with
a CMS proto-slice I was working on. Here's how I solved it, pretty
much:
Merb::Router.prepare do
identify(Content => :id) do
match("/(:id)").to(:controller => "contents") do
match("(/)contents").to(:action => "index").name(:contents)
match("/edit").to(:action => "edit").name(:edit_content)
match("(/)new").to(:action => "new").name(:new_content)
match("/delete").to(:action => "delete").name(:delete_content)
match(:method => :put).to(:action => "update").name(:update_content)
match(:method => :delete).to(:action => "destroy").name(:destroy_content)
match(:method => :post).to(:action => "create").name(:create_content)
match(:method => :get).to(:action => "show").name(:content)
end
end
end
That "contents" special URL is due to my functional requirement that
the / root would show a homepage (with an ID being set implicitly in
the controller code), not the index of all pages. That's also why the
(:id) is optional. If you wanted / to be the index you could
rearrange some of this. Oh, and the need for the optional (/) in
front of 'new' but not the other methods appears to be some sort of
edge case quirk. It took me way too long to figure out how to make
that work.
Point is, it's still a RESTful resource. I had to write the paths
myself, but it all works the way Merb resources are supposed to.
--
Have Fun,
Steve Eley ([email protected])
ESCAPE POD - The Science Fiction Podcast Magazine
http://www.escapepod.org
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"merb" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [email protected]
For more options, visit this group at http://groups.google.com/group/merb?hl=en
-~----------~----~----~----~------~----~------~--~---