我有一些麻烦,使用创建我生成使用支架控制器里面我自己的行动。
我明白了一切映射到宁静的行动,但我建立一个用户控制器,用户可以登录/注销,等等,但是当我创建的操作,并在routes.rb中宣布它,当我访问用户我得到这个错误/登录
Couldn't find User with id=login
它尝试使用登录作为ID参数,而不是将它作为一个动作。
的routes.rb
match 'users/login' => 'users#login'
我觉得我做的事情错了路线,所以如果有人可以帮助我,将是巨大的。
谢谢
我假设你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
的命令行。