同一控制器中有多条路线用于发布和销毁操作?

时间:2018-12-27 07:18:39

标签: ruby-on-rails ruby

我对路由感到困惑,我正在处理json数据admin / admins_controller.rb

获取路由错误No route matches [POST] "/admin/adminsignup"*

admin / admins_controller.rb

class Admin::AdminsController < ApplicationController
  skip_before_action :verify_authenticity_token

  def adminlogin
    user = User.where(email: params[:email]).first
    if user&.valid_password?(params[:password]) 
      render json: user.as_json(only: :email,:first_name,:last_name,:phone,:authentication_token]), status: :created
    else
      head(:unauthorized)
    end
  end

  def adminsignup
    user = User.new(user_params)
    if user.save
      render json: {status: 'success', data:user}, status: :ok
    else
      render json: {status: 'error', message:'There was some error in registering the user.', data:user.errors}, status: :unprocessable_entity
    end
  end

  def logindestroy
    current_user&.authentication_token = nil
      if current_user.save
         head(:ok)
      else
         head(:unauthorized)
      end
  end   

  private

  def user_params
    params.permit(:first_name, :last_name, :email, :password, :phone)
  end
end 

routes.rb

 namespace :admin do
   post 'admins', to: 'admins#adminlogin'
   post 'admins', to: 'admins#adminsignup'
   destroy 'admins', to: 'admins#logindestroy'
 end

user.rb

class User < ApplicationRecord
  acts_as_token_authenticatable

  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
    devise :database_authenticatable, :registerable,
        :recoverable, :rememberable, :validatable
end
  1. 如何使用不同的控制器来设计登录名,例如admins_controller和users_controller?

是更好的方法吗?请帮忙。

1 个答案:

答案 0 :(得分:0)

您想要实现的目标,可以通过here提供的实现来完成

根据定义的控制器编辑路线。