【问题标题】:Rails Devise user controller in subfolderRails 在子文件夹中设计用户控制器
【发布时间】:2012-02-14 14:08:21
【问题描述】:

我正在使用omniauth,并发现为此使用了一个子文件夹(在官方示例中)controllers/users/omniauth_callbacks_controller.rb。我需要为用户创建一个用户显示页面以及其他操作,因此我决定在 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

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

【问题讨论】:

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


    【解决方案1】:

    你只需要在你的 route.rb 中命名你的路线

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

    之后你可以通过user_url(user.id)调用这个路由

    查看指南示例:http://guides.rubyonrails.org/routing.html#naming-routes

    【讨论】:

    • 当我这样做时,它会在views/users/users/show.html.erb 中查找我的视图。为什么是双用户文件夹?
    猜你喜欢
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多