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.