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


#1

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 %>

<%= image_tag("/images/sites_icons/delicious.png") -%> <%= f.hidden_field :url, :value => 'http://delicious.com/' %> <%= f.label :delicious %> <%= f.text_field :username %>

<%= f.submit "Create" %>

<% 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
++++++++++++++
Request

Parameters:

{“commit”=>“Create”,
“delicious”=>{“url”=>“http://delicious.com/”,
“username”=>“lgsicious”},
“authenticity_token”=>“xxxxxxxxxxxxxxx”}
++++++++++++++
Response

Headers:

{“cookie”=>[],
“Cache-Control”=>“no-cache”,
“Allow”=>“GET,
PUT,
DELETE”}
+++++++++++++++


#2

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

Ramon T.


#3

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 %>

<%= image_tag("/images/sites_icons/delicious.png") -%> <%= f.hidden_field :url, :value => 'http://delicious.com/' %> <%= f.label :delicious %> <%= f.text_field :username %>

<%= f.submit "Create" %>

<% end %>

Try this and see if it works.

On Sat, Oct 11, 2008 at 2:17 PM, lgs removed_email_address@domain.invalid wrote:

delete requests are allowed.
create
<%= image_tag("/images/sites_icons/delicious.png") -%>

Request
Headers:

{“cookie”=>[],
“Cache-Control”=>“no-cache”,
“Allow”=>“GET,
PUT,
DELETE”}
+++++++++++++++


Maurício Linhares
http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/
(en)
João Pessoa, PB, +55 83 8867-7208