NoMethodError: undefined method `zombie_url'
NoMethodError: undefined method `zombie_url'
这是我的测试:
require 'test_helper'
class CreatingZombiesTest < ActionDispatch::IntegrationTest
setup { host! 'api.example.com' }
test 'creates a new zombie' do
post '/zombies',
{ zombie:
{ name: 'brain_eater', weapon: 'teeth'}
}.to_json,
{ 'Accept' => Mime::JSON, 'Content-Type' => Mime::JSON.to_s }
assert_equal 201, response.status
end
end
和控制器:
def create
@zombie = Zombie.new(zombie_params)
if @zombie.save
render json: @zombie, status: 201, location: @zombie
end
end
我一直收到这个错误,搜索没有用。
CreatingZombiesTest#test_creates_a_new_zombie:
NoMethodError: undefined method `zombie_url' for #<Api::ZombiesController:0x007f8ef9f6cd60>
app/controllers/api/zombies_controller.rb:22:in `create
路线:
Prefix Verb URI Pattern Controller#Action
api_zombies GET /zombies(.:format) api/zombies#index {:subdomain=>"api"}
POST /zombies(.:format) api/zombies#create {:subdomain=>"api"}
new_api_zombie GET /zombies/new(.:format) api/zombies#new {:subdomain=>"api"}
edit_api_zombie GET /zombies/:id/edit(.:format) api/zombies#edit {:subdomain=>"api"}
api_zombie GET /zombies/:id(.:format) api/zombies#show {:subdomain=>"api"}
PATCH /zombies/:id(.:format) api/zombies#update {:subdomain=>"api"}
PUT /zombies/:id(.:format) api/zombies#update {:subdomain=>"api"}
DELETE /zombies/:id(.:format) api/zombies#destroy {:subdomain=>"api"}
您设置 routes.rb 了吗?即:
post 'zombie/create'
运行
rake routes
在您的终端中并获取相应的 link。注意 - 如果您的 link 是 zombie_create,那么您将必须附加路径或 url,具体取决于您要完成的任务。 (zombie_create_url 或 zombie_create_path)
好的,我解决了,
应该是
location: api_zombie_url(zombie)
我的路由中需要 api_,因为我的控制器位于 Api 命名空间内,因此 zombie_url 未定义,但 api_zombie_url 已定义。
这是我的测试:
require 'test_helper'
class CreatingZombiesTest < ActionDispatch::IntegrationTest
setup { host! 'api.example.com' }
test 'creates a new zombie' do
post '/zombies',
{ zombie:
{ name: 'brain_eater', weapon: 'teeth'}
}.to_json,
{ 'Accept' => Mime::JSON, 'Content-Type' => Mime::JSON.to_s }
assert_equal 201, response.status
end
end
和控制器:
def create
@zombie = Zombie.new(zombie_params)
if @zombie.save
render json: @zombie, status: 201, location: @zombie
end
end
我一直收到这个错误,搜索没有用。
CreatingZombiesTest#test_creates_a_new_zombie:
NoMethodError: undefined method `zombie_url' for #<Api::ZombiesController:0x007f8ef9f6cd60>
app/controllers/api/zombies_controller.rb:22:in `create
路线:
Prefix Verb URI Pattern Controller#Action
api_zombies GET /zombies(.:format) api/zombies#index {:subdomain=>"api"}
POST /zombies(.:format) api/zombies#create {:subdomain=>"api"}
new_api_zombie GET /zombies/new(.:format) api/zombies#new {:subdomain=>"api"}
edit_api_zombie GET /zombies/:id/edit(.:format) api/zombies#edit {:subdomain=>"api"}
api_zombie GET /zombies/:id(.:format) api/zombies#show {:subdomain=>"api"}
PATCH /zombies/:id(.:format) api/zombies#update {:subdomain=>"api"}
PUT /zombies/:id(.:format) api/zombies#update {:subdomain=>"api"}
DELETE /zombies/:id(.:format) api/zombies#destroy {:subdomain=>"api"}
您设置 routes.rb 了吗?即:
post 'zombie/create'
运行
rake routes
在您的终端中并获取相应的 link。注意 - 如果您的 link 是 zombie_create,那么您将必须附加路径或 url,具体取决于您要完成的任务。 (zombie_create_url 或 zombie_create_path)
好的,我解决了, 应该是
location: api_zombie_url(zombie)
我的路由中需要 api_,因为我的控制器位于 Api 命名空间内,因此 zombie_url 未定义,但 api_zombie_url 已定义。