ActionController::MethodNotAllowed: Only get, put, and delete requests are allowed.

Hi all,

I'd need some help with a Subject already appeared here, anyway I "re- post" with same title cause reading the old threads didn't help me.

I get a tipical restful routes mismatching :

                ActionController::MethodNotAllowed: Only get, put, and delete requests are allowed.

but after several try & errors, I don't actually understand what's wrong with it, here are salients bits ...

rails -v :                  Rails 2.1.1

rake routes :

                 create_services POST /services/ create {:action=>"create", :controller=>"services"}                  formatted_create_services POST /services/ create.:format {:action=>"create", :controller=>"services"}

the patrial which get in error ( _delicious.html.erb ):

<% form_for @service.url, create_services_path do |f| %>   <%= f.error_messages %>   <p>     <%= image_tag("/images/sites_icons/delicious.png") -%>     <%= f.hidden_field :url, :value => 'http://delicious.com/’ %>     <%= f.label :delicious %>     <%= f.text_field :username %>   </p>   <p>     <%= f.submit "Create" %>   </p> <% end %>

part of my routes file ( config/routes.rb ):

              map.resources :services, :collection => { :create => :post }

I know should be something stupid, anyway "I'm losing hours" without success ! Any suggestion will be very apreciated.

thz in advance luca

That happens to me when I edit the routes and forget to restart my server.

Ramon Tayag

Hi Luca,

First, you don't need this => :collection => { :create => :post }

just:

map.resources :services

Will do the trick.

Also, your form should be like this:

<% form_for @service do |f| %> <%= f.error_messages %> <p>    <%= image_tag("/images/sites_icons/delicious.png") -%>    <%= f.hidden_field :url, :value => 'http://delicious.com/’ %>    <%= f.label :delicious %>    <%= f.text_field :username %> </p> <p>    <%= f.submit "Create" %> </p> <% end %>

Try this and see if it works.