Route Collections and HTTP methods

I don't see a way to create a single URL in a collection and then have routing dispatch to the appropriate method based on the HTTP method.

map.resources :packages, :collection=>{ :search=>:get }

Gets me half way there, but I can see a way to say that I want the POST to go to the do_search method.

Furthermore

map.resources :packages, :collection=> { :search=>:get, :do_search=>:post }

results in a ActionController::MethodNotAllowed for POSTs to /packages/ do_search.

`rake routes` affirms that this should be accepted:

do_search_packages POST /packages/do_search {:action=>"do_search", :controller=>"packages"}

How can I solve either of these? Thanks

Hi,

I don't have a solution for you but in general searches are GET and never POST. I don't know where this nonsense comes from but it's breaking the principles behind the HTTP.

Did you try :any instead of :post ?

ciao, tom

..but in general searches are GET and never POST. I don't know where this nonsense comes from but it's breaking the principles behind the HTTP.

Well I don't disagree with this paradigm, but the point is Rails seems to not allow one to set up a route like the defaults provided by map.resourses. i.e one URL, dispatched to to 2 different actions based on HTTP method.

Did you try :any instead of :post ?

Either one raises the nonsensical ActionController::MethodNotAllowed. I say nonsensical because rake routes tells me do_search accepts posts.