Rails在子文件夹中设计用户控制器

时间:2012-02-14 14:08:21

标签: ruby-on-rails controller devise routes subdirectory

我正在使用omniauth并使用子文件夹找到设计(在官方示例中)controllers/users/omniauth_callbacks_controller.rb。我需要为User创建一个User show页面以及其他操作,因此我决定在controllers/users文件夹中创建一个新的UsersController。现在看起来像

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

没有GETroute_name
所以我无法在登录重定向后使用它。有没有更好的方法来实现子文件夹路由结构,这样分组控制器是个好主意吗?

1 个答案:

答案 0 :(得分:1)

您只需在路线中命名您的路线.rb

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

之后,您可以通过user_url(user.id)

拨打此路线

请参阅指南示例:http://guides.rubyonrails.org/routing.html#naming-routes