2016-12-04 53 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)

相關問題