gpt4 book ai didi

ruby-on-rails - rails Controller 中的自定义 Action 与 Restful Action ?

转载 作者:行者123 更新时间:2023-12-04 17:38:16 24 4
gpt4 key购买 nike

我在使用脚手架生成的 Controller 中创建自己的操作时遇到了一些麻烦。

我明白一切都映射到restful操作,但我正在构建一个用户 Controller ,用户可以在其中登录/注销等,但是当我创建操作并在routes.rb中声明它时,我在访问用户/登录时收到此错误

Couldn't find User with id=login

它尝试将登录用作 ID 参数,而不是将其用作操作。

路由文件
match 'users/login' => 'users#login'

我想我在路线上做错了,所以如果有人能帮助我那就太好了。

谢谢

最佳答案

我假设你的 routes.rb看起来像这样:

resources :users
match 'users/login' => 'users#login'

问题是 Rails 使用第一个匹配的路由。来自 documentation :

Rails routes are matched in the order they are specified, so if you have a resources :photos above a get 'photos/poll' the show action’s route for the resources line will be matched before the get line. To fix this, move the get line above the resources line so that it is matched first.



所以要么在 resources :users 之前定义你的自定义路由:
match 'users/login' => 'users#login'
resources :users

...或将此语法用于 adding more RESTful actions :
resources :users do
collection do
match 'login'
end
end

要查看现有路线(及其顺序),请运行 rake routes 从命令行。

关于ruby-on-rails - rails Controller 中的自定义 Action 与 Restful Action ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11356453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com