我是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
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
谢谢!
答案 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'
如你所愿,但如果你使用最后一个,那么任何人都必须推断出这是一个受限制的资源。