以下是我的routes.rb
Rails.application.routes.draw do
resources :admin do
post 'user_creation', on: :collection
end
get 'admin/user_creation'
resources :admin, :only => [:user_creation, :create, :new]
end
以下是我的控制器
class AdminController < ApplicationController
def new
@dashboard_user = DashboardUser.new
end
def create
@dashboard_user = DashboardUser.new(dashboard_params)
@dashboard_user.save!
end
def user_creation
end
private
def dashboard_params
params.require(:dashboard_user).permit(:user_name, :password, :last_name, :first_name, :middle_name , :phone)
end
end
然后是一个简单的.html.erb文件 会发生什么事情,当我尝试打开链接admin / user_creation时,它会自动重定向到show.html.erb文件
rake路线输出
rake routes
Prefix Verb URI Pattern Controller#Action
user_creation_admin_index POST /admin/user_creation(.:format) admin#user_creation
admin_index GET /admin(.:format) admin#index
POST /admin(.:format) admin#create
new_admin GET /admin/new(.:format) admin#new
edit_admin GET /admin/:id/edit(.:format) admin#edit
admin GET /admin/:id(.:format) admin#show
PATCH /admin/:id(.:format) admin#update
PUT /admin/:id(.:format) admin#update
DELETE /admin/:id(.:format) admin#destroy
admin_user_creation GET /admin/user_creation(.:format) admin#user_creation
POST /admin(.:format) admin#create
GET /admin/new(.:format) admin#new
root GET / admin#new
答案 0 :(得分:1)
您正在点击网址的链接。 admin/user_creation
但是你的路线说它是一个POST网址。
需要添加为GET。
Rails.application.routes.draw do
resources :admin do
post 'user_creation', on: :collection
get 'user_creation', on: :collection
end
get 'admin/user_creation'
resources :admin, :only => [:user_creation, :create, :new]
end
答案 1 :(得分:0)
你的路线不太好看。每当我们尝试直接从浏览器转到任何网址时,它会将请求视为get
类型。 routes文件尝试从上到下查找路由。这就是为什么它将/admin/user_creation
视为显示admin_controller
和user_creation
的动作的原因。
不知道为什么需要获取和发布相同操作的请求。但是你的路线应该是这样的:
Rails.application.routes.draw do
resources :admin, :only => [:create, :new] do
post 'user_creation', on: :collection
get 'user_creation', on: :collection
end
end
上述路线的一件事是没有展示行动的路线。现在您将正确转到user_creation路径。
如果您不需要任何帖子路径,那么它应该如下所示:
Rails.application.routes.draw do
resources :admin, :only => [:create, :new] do
get 'user_creation', on: :collection
end
end
如果您需要所有默认操作:
Rails.application.routes.draw do
resources :admin do
get 'user_creation', on: :collection
end
end