在宁静的操作轨道器自定义操作?(Custom actions in rails controller

2019-09-19 03:56发布

我有一些麻烦,使用创建我生成使用支架控制器里面我自己的行动。

我明白了一切映射到宁静的行动,但我建立一个用户控制器,用户可以登录/注销,等等,但是当我创建的操作,并在routes.rb中宣布它,当我访问用户我得到这个错误/登录

Couldn't find User with id=login

它尝试使用登录作为ID参数,而不是将它作为一个动作。

的routes.rb

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

我觉得我做的事情错了路线,所以如果有人可以帮助我,将是巨大的。

谢谢

Answer 1:

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

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

问题是,Rails使用第一个匹配的路由。 从文档 :

轨路线在他们指定的顺序匹配的,所以如果你有一个resources :photos一以上get 'photos/poll'show动作的的航线resources生产线将在之前匹配get线。 为了解决这个问题,将get 上述线路resources行,以便它首先匹配。

因此,无论之前定义自定义航线resources :users

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

...或使用此语法添加更多REST风格的动作 :

resources :users do
  collection do
    match 'login'
  end
end

要查看现有的路由(和它们的顺序)运行rake routes的命令行。



文章来源: Custom actions in rails controller with restful actions?