【问题标题】:Rails custom and default routesRails 自定义和默认路由
【发布时间】:2016-02-17 09:46:34
【问题描述】:

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

到目前为止,我有这样的东西

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

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

提前致谢。

【问题讨论】:

  • 我已阅读整篇文章,但 :onlydo 块的组合不存在。这种组合在 Ruby 中可能很常见,但我不习惯它,也无法找到示例或解决方案。但无论如何,谢谢。

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


【解决方案1】:

您的路线错误。 resources :users 生成七个默认路由,其中​​还包括index 路由。您需要将代码调整为以下

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

注意:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-10-13
      • 2015-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      相关资源
      最近更新 更多