【问题标题】:difficulty with member routes会员路线困难
【发布时间】:2013-11-21 21:02:42
【问题描述】:

更新:这完全是一个可怕的错误——我更新了错误的路由文件! 这确实有效:get 'users/:id/groups/' => 'users#groups'

我希望能够查看属于特定用户的组,但在设置可解析为的路由时遇到问题:

/users/:id/groups

出于某种原因。我猜想设计可能会妨碍您。

我尝试了以下方法:

resources :users 

match '/users/:id/groups', to: 'users#groups', via: :get

resources :users do
  member do
    get 'groups'
  end
end

当我打电话给rake routes时,这样的路线永远不会出现:

$ rake routes
              Prefix Verb   URI Pattern                          Controller#Action
              groups GET    /groups(.:format)                    groups#index
                     POST   /groups(.:format)                    groups#create
           new_group GET    /groups/new(.:format)                groups#new
          edit_group GET    /groups/:id/edit(.:format)           groups#edit
               group GET    /groups/:id(.:format)                groups#show
                     PATCH  /groups/:id(.:format)                groups#update
                     PUT    /groups/:id(.:format)                groups#update
                     DELETE /groups/:id(.:format)                groups#destroy
            calendar GET    /calendar(/:year(/:month))(.:format) calendar#index {:year=>/\d{4}/, :month=>/\d{1,2}/}
                root GET    /                                    calendar#index
    new_user_session GET    /users/sign_in(.:format)             devise/sessions#new
        user_session POST   /users/sign_in(.:format)             devise/sessions#create
destroy_user_session DELETE /users/sign_out(.:format)            devise/sessions#destroy
       user_password POST   /users/password(.:format)            devise/passwords#create
   new_user_password GET    /users/password/new(.:format)        devise/passwords#new
  edit_user_password GET    /users/password/edit(.:format)       devise/passwords#edit
                     PATCH  /users/password(.:format)            devise/passwords#update
                     PUT    /users/password(.:format)            devise/passwords#update
cancel_user_registration GET    /users/cancel(.:format)              registrations#cancel
       user_registration POST   /users(.:format)                     registrations#create
   new_user_registration GET    /users/sign_up(.:format)             registrations#new
  edit_user_registration GET    /users/edit(.:format)                registrations#edit
                         PATCH  /users(.:format)                     registrations#update
                         PUT    /users(.:format)                     registrations#update
                         DELETE /users(.:format)                     registrations#destroy
       user_confirmation POST   /users/confirmation(.:format)        devise/confirmations#create
   new_user_confirmation GET    /users/confirmation/new(.:format)    devise/confirmations#new
                         GET    /users/confirmation(.:format)        devise/confirmations#show
  accept_user_invitation GET    /users/invitation/accept(.:format)   devise/invitations#edit
  remove_user_invitation GET    /users/invitation/remove(.:format)   devise/invitations#destroy
         user_invitation POST   /users/invitation(.:format)          devise/invitations#create
     new_user_invitation GET    /users/invitation/new(.:format)      devise/invitations#new
                        PATCH  /users/invitation(.:format)          devise/invitations#update
                        PUT    /users/invitation(.:format)          devise/invitations#update
                   users GET    /users(.:format)                     users#index
                          POST   /users(.:format)                     users#create
                new_user GET    /users/new(.:format)                 users#new
               edit_user GET    /users/:id/edit(.:format)            users#edit
                    user GET    /users/:id(.:format)                 users#show
                         PATCH  /users/:id(.:format)                 users#update
                         PUT    /users/:id(.:format)                 users#update
                         DELETE /users/:id(.:format)                 users#destroy
                  events GET    /events(.:format)                    events#index
                         POST   /events(.:format)                    events#create
               new_event GET    /events/new(.:format)                events#new
              edit_event GET    /events/:id/edit(.:format)           events#edit
                   event GET    /events/:id(.:format)                events#show
                         PATCH  /events/:id(.:format)                events#update
                         PUT    /events/:id(.:format)                events#update
                         DELETE /events/:id(.:format)                events#destroy

【问题讨论】:

  • 你能发布你的整个 routes.rb 吗?这些都应该工作......
  • 是的 - 对不起,我忘了提到我正在使用设计。 (更新后)
  • 优先级似乎没有影响
  • 使用 devise 可以防止您嵌套传统意义上的资源。查看此问题以获取更多信息和可能的解决方案:stackoverflow.com/questions/17349666/…
  • 啊,你用的是设计……

标签: ruby-on-rails devise routes ruby-on-rails-4


【解决方案1】:

为什么在尝试嵌套资源时要指定成员?你试过了吗

resources :users do
  resources :groups, only: :index
end

【讨论】:

  • 但这会将/users/:id/groups 路由到groups#index。我希望它路由到users#my_groups。还是我弄错了。我想我不清楚嵌套资源和成员之间的区别。
  • 另外 - 这样做不会在我的 rake routes 通话中显示新路线。
  • 啊,好吧,所以您尝试获取 my_groups 页面而不是嵌套组资源。哦,顺便说一句,我相信'match'在rails 4中已被弃用。你需要像“get'/users/:id/groups',to:'users#groups'”一样 - 见guides.rubyonrails.org/routing.html
  • 或“get 'users/:id/groups/ => 'users#groups'”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-26
  • 1970-01-01
  • 2012-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多