2016-03-06 2 views
0

Я новичок в рельсах, и я пытаюсь построить API после учебного курса по Code School. Я получаю эту ошибку при попытке отправить сообщение на путь «/ users».Нет совпадений маршрутов [POST] "/ users"

маршрутов коды файла:

Rails.application.routes.draw do 
    namespace :api,constraints: {subdomain: 'api'}, path: '/' do 
    resources :users, except: :delete 
    end 
end 

и тест-код:

require 'test_helper' 
class CreatingUsersTest < ActionDispatch::IntegrationTest 
    test 'create users' do 
    post api_users_path, 
     {user: {name: 'test', email:'[email protected]'}}.to_json, 
     {'Accept' => Mime::JSON, 'Content-Type': Mime::JSON.to_s} 
    assert_equal response.status, 201 
    assert_equal response.content_type, Mime::JSON 
    user = json(response.body) 
    assert_equal api_user_url(user[:id]), response.location 
end 
end 

И когда я использую рейк маршруты:

api_users GET /users(.:format) api/users#index {:subdomain=>"api"} 
       POST /users(.:format) api/users#create {:subdomain=>"api"} 
    .... 

ответ

0

В пути вы тяготы субдомны в be api

namespace :api,constraints: {subdomain: 'api'}, path: '/' do 

но в тесте вы называете api_user_path

post api_users_path 

, который использует общее имя хоста (test.host), а не api имени хоста. Решение состоит в том, чтобы передать конкретный хост помощнику, который удовлетворяет требованию.

post api_users_path(host: "api.test.host")