我正在尝试在rails应用程序中编写一个分页索引操作。这是我的控制器代码
def index
@pokemons = Pokemon.all.limit(params[:limit]).offset(params[:offset])
end
当我通过浏览器发出请求时,这在我的开发服务器中工作得很好。
然而,在我的测试中,我在调用索引操作时遇到了麻烦。
当我运行下面的测试时,一个GET请求被路由到#index。
test "should return paginated index" do
get pokemons_url, as: :json
assert_response :success
end
但是,只要我添加与分页相关的参数,就像这样。..
test "should return paginated index" do
get pokemons_url, params: {limit: 10, offset: 0}, as: :json
assert_response :success
end
...我的服务器收到的请求变成了POST而不是GET,并且它被路由到我的#create操作。
下面是我的config/routes.rb
:
Rails.application.routes.draw do
resources :pokemons
end
下面是rails routes
的相关输出:
pokemons GET /pokemons(.:format) pokemons#index
POST /pokemons(.:format) pokemons#create
pokemon GET /pokemons/:id(.:format) pokemons#show
PATCH /pokemons/:id(.:format) pokemons#update
PUT /pokemons/:id(.:format) pokemons#update
DELETE /pokemons/:id(.:format) pokemons#destroy
为什么在Minitest中向'get'方法添加参数会将GET请求转换为POST请求?如何从Minitest发送包含分页参数的GET?
2条答案
按热度按时间mbzjlibv1#
如果参数是简单的查询字符串参数,则应将其传递给路由帮助程序:
neekobn82#
请告诉我的
routes.rb
和你的定义pokemons_url
你必须确保pokemons_url
相同的pokemons_index_path
如果你的控制器名称是PokemonsController