使用默认路由但自定义路由提供未初始化的常量Api :: V1 :: UserController

时间:2018-01-22 15:21:37

标签: ruby-on-rails api

我知道这些问题已被问过几次,但我检查了这些答案,但似乎没有解决我的问题。

路径app / controllers / api / v1 /

上的

users_controller.rb

module Api
    module V1
        class UsersController < ApplicationController

            def create_user
                @users = User.new(user_params)
                if @users.save
                    render json: { status: '201', message: 'User created successfully' }
                else
                    render json: { status: '400', message: 'Invalid user info', data: @users.errors }
                end
            end

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

的routes.rb

namespace 'api' do
        namespace 'v1' do

          post "user/createuser", to: "user#create_user"
        end
end

我尝试过:

  • 检查了所提到的目录结构
  • 重新启动服务器并检查
  • 文件夹名称:所有简单控制器&gt; api> V1

但是当我更改routes.rb

时,这可以正常工作

post "user/createuser", to: "user#create_user"

resource :users

def create_user

def create

为什么在定义自定义路由而不是使用默认路由时,事情不起作用?如何使用自定义路线开展此工作

1 个答案:

答案 0 :(得分:2)

由于Rails惯例,我认为您需要使用

更新路线
post "user/createuser", to: "users#create"

而不是

post "user/createuser", to: "user#create_user"