如何在routes.rb中使用'post'

时间:2012-12-25 22:06:32

标签: ruby-on-rails

请帮帮我 我创建了一个控制器'users',其中包含一个用于登录用户的表单'login',我已将routes.rb更改为get user/login更改为post user/login

现在,当我转到localhost:3000/users/login时出现:

Routing Error

No route matches [GET] "/users/login"
Try running rake routes for more information on available routes.

请该如何处理该页面,问题是因为我在路由器中将'get'更改为'post',还有更多我应该添加的内容吗?

2 个答案:

答案 0 :(得分:1)

当您在浏览器中转到该网址时,请求的类型为GET - 但正如您所说,现在没有此请求的路由。

当您在此页面上实际提交表单时,

POST路由非常有用 - 使用简单提交(将method属性指定为POST)或AJAX请求。

答案 1 :(得分:0)

您可以在routes.rb中使用它们:

get user/login
post user/login

这意味着控制器将识别使用这两种方法发出的请求。由您的控制器逻辑来排序。获取通常用于呈现登录表单; post会收到用户的用户名和密码,对他/她进行身份验证,然后重定向到页面以便成功登录(如果需要,可以不成功)。

我可能会说这个引起一些争议,但如果你是初学者而且你正在寻找一个带有用户身份验证的“严肃”网站,你可能不想留下任何机会,而是使用像设计一样的宝石(https://github.com/plataformatec/devise)为你做这件事。有些人会说最好先从头开始学习如何做,而且也有一些意义。