Rails无法识别PUT请求

时间:2013-04-03 08:48:35

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

Rails出现以下错误:

No route matches [POST] "/users/32"

即使路线,视图和控制器设置正确。我缺少什么?

环境:Rails 3.2.12,Ruby 2.0.0p0

路线

Foo::Application.routes.draw do
  resources :users
  match '/pages/:action', controller: "pages", as: "pages"
  root to: 'pages', action: 'index'
end

耙路线

    users GET    /users(.:format)          users#index
          POST   /users(.:format)          users#create
 new_user GET    /users/new(.:format)      users#new
edit_user GET    /users/:id/edit(.:format) users#edit
     user GET    /users/:id(.:format)      users#show
          PUT    /users/:id(.:format)      users#update
          DELETE /users/:id(.:format)      users#destroy
    pages        /pages/:action(.:format)  pages#:action
     root        /                         pages#index 

Haml的

= form_tag "/#{@collection_name}/#{@entity.id}", :method => :put do
  ...

哪个被转换成这个html

<form accept-charset="UTF-8" action="/users/32" method="post">
  <div style="margin:0;padding:0;display:inline">
    <input name="utf8" type="hidden" value="✓">
    <input name="_method" type="hidden" value="put">
    <input name="authenticity_token" type="hidden" value="NnD8tNkx//5o3TQWhBYxFgYGS8kG9n+7WSeA0mon9t8=">
  </div>
  ...

1 个答案:

答案 0 :(得分:1)

我有一个show user页面,它显示一个带有禁用输入的表单,其中显示了所有用户数据。

有一个按钮可以启用所有字段并允许编辑用户。此按钮由一些JavaScript代码处理,并在所有表单输入元素上切换“disabled”属性。

由于_method和所有魔术Rails表单属性也是输入,因此我的JavaScript代码会在其上添加disabled属性,因为它们没有。{/ p>

课程:不要使用JAVASCRIPT处理所有表单输入,RAILS依赖于其中某些内容。