ruby - 运行http:// localhost:3000 / admin / users但redirect_to http:// localhost:3000 / admin / login

时间:2017-04-16 03:39:05

标签: ruby-on-rails ruby

我是Ruby on Rails的新手。 我想运行http://localhost:3000/admin/users来查看用户索引页面。 但是当我运行此链接时,它会引导我http://localhost:3000/admin/login

我的路线设置有什么不对吗?

Rails.application.routes.draw do
  get 'users/new'
  get 'users/show'

  if Rails.env.development?
    mount LetterOpenerWeb::Engine, at: '/letter_opener'
  end
  root to: 'helps#top'

  # admin login
  get 'admin/login', to: 'admin/login#index', as: 'admin/login'
  get 'admin/logout', to: 'admin/login#logout'
  post 'admin/login/login'
  get 'admin', to: 'admin/projects#index', as: 'admin_top'


  namespace :admin do
    resources :users,  only: %i(index new create)
    resources :projects do
      resources :project_users
      resources :project_comments
    end
    resources :images
    resources :categories
    resources :campanies
  end
end

users_controller.rb

class Admin::UsersController < AdminController
before_action :set_user, only: [:show, :edit, :update, :destroy]

def index
    @users = User.all
end

def show
end

def new
    @user = User.new
end

def edit    
end

#Post /admin/projects
def create
    @user = User.new(user_params)

    if @user.save
        flash[:notice] = 'User saved successfully'
        redirect_to :back
    else
        flash[:alert] = @user.errors
        binding.pry
        render :new
    end
end

def update
end

def destroy
end

private

    def set_user
        @user = User.find(params [:id])
    end

    def user_params
        params.require(:user).permit(:campany_id, :name, :email, :password_digest, :profile, :prefecture_id, :address)
    end
end

谢谢!

1 个答案:

答案 0 :(得分:1)

您的UsersControllers位于管理员名称空间下,也就是说您必须登录才能访问此名称。

如果您想要在未验证用户的情况下进行访问,那么您必须删除对控制器的约束或验证,或者创建指向/admin/users的新控制器和索引方法,但是这次没有用户验证。

这是:

# app/controllers/users_controller.rb
class UsersController < ApplicationController
  ...
  def index
    @users = User.all
  end
  ...
end

# config/routes.rb
get '/users', to: 'users#index'

'/users''/admin/users'如你所愿,但如果你使用最后一个,那么任何人都必须推断出这是一个受限制的资源。

相关问题