member do
Does anyone have any idea what am I doing wrong?
First check: is this route listed when you do rake routes | grep price ?
Yes, it is. This is the output
[[email protected] depot]$ rake routes | grep price
price_item POST /items/:id/price(.:format)
{:action=>“price”, :controller=>“items”}
On Sun, Feb 20, 2011 at 5:31 PM, Leonardo M. [email protected]wrote:
Hi guys,
-0300
{:action=>“price”, :controller=>“items”}
… that’s crazy, then. The route is there, looks to be configured just
fine. No reason you should get a “no route matches” error, that I can
see.
In development mode you shouldn’t even need to restart the server, but
you
could always try that.
From what you’ve posted so far, I can’t see that you’re doing anything
wrong. Not sure why it wouldn’t be working.
try calling it using:
curl /items/:id/price.html or price.json as needed.
format is needed when you call a route from outside without using named_path
route.
That didn’t work either, but I think that’s because curl is requesting
a GET and the route is a POST.
I don’t know what’s going on. Everything seems to be in the right place.
On Mon, Feb 21, 2011 at 2:15 PM, David J. Hamilton [email protected]
wrote:
Excerpts from Phil C.'s message of Sun Feb 20 15:14:45 -0800 2011:
Started POST “/items/28/price” for 127.0.0.1 at 2011-02-20 18:52:10 -0300
ActionController::RoutingError (No route matches “/items/28/price”):
First check: is this route listed when you do rake routes | grep price ?
Second check: Confirm that your form really does have method=POST.
Yes, it does. Anyway, I’ve just changed it to use the update action,
it makes more sense anyway.
However, I still don’t understand why it is happening.
Excerpts from Leonardo M.'s message of Tue Feb 22 17:12:06 -0800
2011:
However, I still don’t understand why it is happening.
Something I should have been more clear about: you want to make sure
that your
form element has its method attribute set to post, but you will also
need to
check that it does not have a hidden parameter generated by rails named
_method
with a value of, e.g. put.
Unfortunately when you make this mistake of specifying a post route in
config/routes but accidentally submitting to a synthetic “put” (very
easy to do
if using +form_for+), the log will still read Started POST and you will
be
given no indication of the problem.
However, I still don’t understand why it is happening.
Something I should have been more clear about: you want to make sure
that your
form element has its method attribute set to post, but you will also
need to
check that it does not have a hidden parameter generated by rails named
_method
with a value of, e.g. put.
Unfortunately when you make this mistake of specifying a post route in
config/routes but accidentally submitting to a synthetic “put” (very
easy to do
if using +form_for+), the log will still read Started POST and you will
be
given no indication of the problem.
Wow - THANK YOU! I would have been scratching my head for hours on this
one. Very non-obvious, and seemingly not well known.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.