2016-12-04 65 views
1

我在API模式下使用Rails 5开始了一个新项目。Rails 5 api - undefined方法`user_url'

目前我只是创建项目,设置数据库并使用scaffold命令。

rails g scaffold User 

我尽我的代码与邮递员来创建一个新用户(POST)

请求

URI localhost:3000/v1/users 
{ 
    "first_name": "Firstname", 
    "last_name": "Lastname", 
    "email": "[email protected]" 
} 

结果

#<NoMethodError: undefined method `user_url' for #<Api::V1::UsersController:0x005594d8a4ad90> 

我怎么能解决这个错误?

的routes.rb

Rails.application.routes.draw do 
    scope module: 'api' do 
    namespace :v1 do 
     resources :users, :as => 'user' 
    end 
    end 
end 

users_controller.rb

# POST /users 
def create 
    @user = User.new(user_params) 

    if @user.save 
    render json: @user, status: :created, location: @user 
    else 
    render json: @user.errors, status: :unprocessable_entity 
    end 
end 
+0

检查您的路线与斌/铁路路线..我认为你需要写v1_user_url – siegy22

+0

我认为“位置:”调用一个不好的网址。我对吗 ? – Sancho

+0

正确。删除。 – mrlindsey

回答

1

尝试扭转你的名字空间和范围:

namespace :api, path: '/' do 
    scope module: :v1 do 
    resources :users 
    end 
end 
+0

我有错误“路由/ mapper.rb:859:在'范围内':没有给出的块(yield)” – Sancho

+0

忘记了上面的'do'。再试一次。 – mrlindsey

1

尝试改变location: @userlocation: v1_user_url(@user)