我正在尝试为我的控制器定义自定义路由,我也需要使用一些默认路由。有没有简单的解决方案?
到目前为止,我有类似的事情
resources :users do
member do
get 'users/:id', to: 'users#show'
delete 'users/:id', to: 'users#destroy'
end
collection do
post 'users', to: 'users#create'
post 'users/login', to: 'users#login'
end
end
resources :users, :only => [:show, :destroy, :create, :login]
我不需要也不想要index
路线,但使用此设置时,它仍然会尝试将GET users/
路由到user_controller
index
方法。
我知道可能有一些简单而明显的答案,但我找不到它。
提前感谢。
答案 0 :(得分:2)
你的路线错了。 resources :users
生成七条默认路由,其中也包含index
路由。您需要将代码调整到下面
resources :users, :only => [:show, :destroy, :create] do
collection do
post 'login', to: 'users#login'
end
end
<强> 注意:的强>
如果您注意到,我已删除show
,create
和delete
的自定义路由,因为它们是默认生成的。
答案 1 :(得分:1)
您的第一行定义了索引操作的路径。仅定义一次资源。阅读routing guide。
resources :users, :except => [:index] do
collection do
post 'users/login', to: 'users#login'
end
end
从项目根文件夹的命令行运行rake routes
以查看所有路径定义。