Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails控制器中具有restful操作的自定义操作?_Ruby On Rails_Routes - Fatal编程技术网

Ruby on rails rails控制器中具有restful操作的自定义操作?

Ruby on rails rails控制器中具有restful操作的自定义操作?,ruby-on-rails,routes,Ruby On Rails,Routes,我在使用scaffold生成的控制器中创建自己的操作时遇到了一些问题 我知道一切都映射到restful操作,但我正在构建一个用户控制器,用户可以在其中登录/注销,等等,但是当我创建了操作并在routes.rb中声明它时,我在访问用户/登录时会出现此错误 Couldn't find User with id=login 它尝试将login用作ID参数,而不是将其用作操作 Routes.rb match 'users/login' => 'users#login' 我想我的路线有问题,如果

我在使用scaffold生成的控制器中创建自己的操作时遇到了一些问题

我知道一切都映射到restful操作,但我正在构建一个用户控制器,用户可以在其中登录/注销,等等,但是当我创建了操作并在routes.rb中声明它时,我在访问用户/登录时会出现此错误

Couldn't find User with id=login
它尝试将login用作ID参数,而不是将其用作操作

Routes.rb

match 'users/login' => 'users#login'
我想我的路线有问题,如果有人能帮我,那就太好了


谢谢

我猜你的
路线。rb
看起来像这样:

resources :users
match 'users/login' => 'users#login'
问题是Rails使用匹配的第一条路由。从:

Rails路由按照指定的顺序进行匹配,因此如果在
get'photos/poll'
上有一个
resources:photos
,则
show
操作的
resources
行的路由将在
get
行之前进行匹配。要解决此问题,请将
get
移动到
resources
行上方,以便首先匹配该行

因此,在
参考资料:用户之前定义您的自定义路由:

match 'users/login' => 'users#login'
resources :users
…或将此语法用于:


查看从命令行运行的现有路由(及其顺序)。

我认为您的路由正在调用用户#show而不是用户#login。因此,您必须将“用户/登录名”更改为其他url。
resources :users do
  collection do
    match 'login'
  end
end