Пользовательский контроллер Rails Devise в подпапке - PullRequest
2 голосов
/ 14 февраля 2012

Я использую omniauth и нашел для этого устройство с подпапкой (в официальном примере) controllers/users/omniauth_callbacks_controller.rb.Мне нужно создать страницу показа пользователя, а также другие действия для пользователя, поэтому я решил создать новый UsersController внутри папки controllers/users.Теперь это выглядит так:

class Users::UsersController < ApplicationController
  def show
    @user = User.find(params[:id])
  end
end

routes.rb

My::Application.routes.draw do
  devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
  match 'users/:id' => 'users/users#show'

  root :to => 'home#index'
end

работает, но созданный маршрут без имени
rake routes дает

/users/:id(.:format) users/users#show

без GET и route_name
, поэтому я не могу использовать его, например, после перенаправления входа в систему.Есть ли лучший способ реализовать структуру маршрутов подпапок, и стоит ли группировать контроллеры следующим образом?

1 Ответ

1 голос
/ 14 февраля 2012

Вам просто нужно назвать свой маршрут в вашем маршруте. Rb

match 'users/:id' => 'users/users#show', :as => 'user'

После этого вы можете позвонить по этому маршруту по номеру user_url(user.id)

См. Пример в руководствах: http://guides.rubyonrails.org/routing.html#naming-routes

...