2011-02-18 156 views
2

当我通过浏览器(GET)在我的应用中访问/ users/registration/sign_up页面呈现时。当我通过POST做同样的事情(无论是提交表单W /目标/用户/注册/ sign_up或AJAX)我的应用程序返回以下错误:Rails理解GET请求,但不支持POST请求

未知的动作 行动“注册”不能中找到UsersController

我使用的设计进行身份验证和创造我的用户模型有一项航线使用:

devise_for:用户

此路径路由经过的色器件/ registrations_controller在那里我期待它执行新的方法(它目前用于GET请求)。也许轨道,理解请求是一个POST请求自动将它指向创建方法,但我不认为这是问题,因为我开始调试器的第一件事情在创建方法和调试器没有开始在我的终端之前,我收到这个错误。

任何有设计经验的人都可以破译发生了什么?如有需要,我很乐意提供更多信息。谢谢。

+0

为什么不简单地在你的路由中使用`resources:users`并且URI将是`/ users/new`? – 2011-02-18 15:58:31

回答

4

设计增加了路由到您的Rails应用程序,您可以通过从终端运行rake routes看到:

 new_user_session GET /users/sign_in(.:format) 
      user_session POST /users/sign_in(.:format) 
    destroy_user_session GET /users/sign_out(.:format) 
     user_password POST /users/password(.:format) 
    new_user_password GET /users/password/new(.:format) 
    edit_user_password GET /users/password/edit(.:format) 
         PUT /users/password(.:format) 
    user_registration POST /users(.:format) 
new_user_registration GET /users/sign_up(.:format) 
edit_user_registration GET /users/edit(.:format) 
         PUT /users(.:format) 
         DELETE /users(.:format) 
        root  /(.:format) 

而当你发现,有一个GET /users/sign_up,但没有POST /users/sign_up。创建Devise时需要POST /users,您可以使用帮助器方法user_registration_path。这可以通过Devise::RegistrationsController#create来处理。

+0

这回答我的问题。谢谢!有什么方法可以添加特定的路线吗?说我目前没有它,但想补充:POST /用户/注册?另外。:格式是什么意思? – user531065 2011-02-19 08:55:40