我正在使用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
没有GET
和route_name
所以我无法在登录重定向后使用它。有没有更好的方法来实现子文件夹路由结构,这样分组控制器是个好主意吗?
答案 0 :(得分:1)
您只需在路线中命名您的路线.rb
match 'users/:id' => 'users/users#show', :as => 'user'
之后,您可以通过user_url(user.id)
请参阅指南示例:http://guides.rubyonrails.org/routing.html#naming-routes