After the release of 2.3 I immediately updated my app. However routing
does no longer seem to work for me. I have no idea how this can happen
but as soon as I POST to, for example, the forums_path, the request
gets routed to ForumsController#index instead of
ForumsController#create. The same happens with nested resources. Eg
POST to forums/1/topics leads to a POST in the ForumsController#1 with
params "id" => "topics"
I'm using these plugins which might mess up the routing:
acts_as_list
ar_fixtures
attachment_fu_hacks
mimetype-fu
restful_authentication
smurf
acts_as_tree
attachment_fu
hoptoad_notifier
newrelic_rpm
role_requirement
Hi, there’s no certainty that plugins are compatible from release to release. If the plugin author hasn’t upgraded the plugin for a release, then you have two choices:
a) wait for the author to update the plugin
b) fix it yourself
From the list that appears above, do you know for certain which plugin is causing the problem?
I don't think the problem is in the plugins. The only one involved in
routing is the new_relic plugin and removing that one is not helping.
I was just providing this information as a possible inroad.
So far I tried the following:
- My environments.rb file is basically the same as the one in a new
project.
- My routes.rb file is being read properly.
- 'rake routes' returns the usual set of routes.
- Running the server with webrick iso mongrel does not help.
I also found, that :_method => :get in link_to_remote doesn't work
anymore. That is, rails 2.3.2 doesn't treat it as GET request, but as
POST. so REST route doesn't work
Isn't _method only there for those methods that browsers won't use (eg
DELETE). You should be able to make link_to_remote do an actual get
rather than a fake one.
I did. :S
Even GET requests go wrong. In the routes.rb:
map.resources :forums, :has_many => [:topics]
And doing a GET on (the existing) forums/1/topics gets routed to:
Processing ForumsController#1 (for 127.0.0.1 at 2009-03-17 10:10:29)
[GET]
Parameters: {"id"=>"topics"}
My initial hunch was correct, thank you Conrad for you pointy question
on which plugin might be the culprit. The plugin 'smurf' inserted some
evil map.connects. Totally fixed it now!
Isn't _method only there for those methods that browsers won't use (eg
DELETE). You should be able to make link_to_remote do an actual get
rather than a fake one.
the question is - why rails 2.2.2 generates right JS cod for Ajax GET
request, but 2.3.2 isn't. It doesn't matter wich exactly method I
write. 2.2.2. generate correct JS code like
new Ajax.Request('/items', {asynchronous:true, evalScripts:true,
method:'get', ...
I am seeing this as well. Only causes problems with xml and xhr
requests. Passing the _method=put on a http request works as expected.
See this ticket for how you can verify the problem. I haven't come up
with a solution yet.