Rails自定义和默认路由

时间:2016-02-17 09:46:34

标签: ruby-on-rails ruby routing rails-routing

我正在尝试为我的控制器定义自定义路由,我也需要使用一些默认路由。有没有简单的解决方案?

到目前为止,我有类似的事情

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方法。

我知道可能有一些简单而明显的答案,但我找不到它。

提前感谢。

2 个答案:

答案 0 :(得分:2)

你的路线错了。 resources :users生成七条默认路由,其中​​也包含index路由。您需要将代码调整到下面

resources :users, :only => [:show, :destroy, :create] do
  collection do 
    post 'login', to: 'users#login'
  end
end

<强> 注意:

如果您注意到,我已删除showcreatedelete自定义路由,因为它们是默认生成的。

答案 1 :(得分:1)

您的第一行定义了索引操作的路径。仅定义一次资源。阅读routing guide

resources :users, :except => [:index] do
  collection do 
    post 'users/login', to: 'users#login'
  end
end

从项目根文件夹的命令行运行rake routes以查看所有路径定义。