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
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.
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 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”}
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.