Railsroutes.rb求助

Rails routes.rb assistance

在此先感谢您的帮助!!

我在routes.rb:

get 'api/streets:name' => 'streets#get_by_name', as: "get_by_name"

我在streets_controller.rb:

ids = params[:name]

我在 Javascript:

const params = encodeURI('name[]=1&name[]=2')
fetch(`/api/streets?${params}`)

当我从前端调用 api 时,我收到以下日志消息:

Started GET "/api/streets?name%5B%5D=2&name%5B%5D=5" for 127.0.0.1 at 2019-09-06 17:10:59 -0700
   Rendering pages/index.html.erb within layouts/application
Processing by PagesController#index as */*
   Parameters: {"name"=>["2", "5"], "path"=>"api/streets"}
   Rendered pages/index.html.erb within layouts/application (7.1ms)
   Rendering pages/index.html.erb within layouts/application

为什么使用 PagesController 而不是 StreetsController?

在我在 api 上获取、发布、放置和删除的所有其他情况下,路由器知道要使用哪个控制器。这只是我在使用数组参数时路由到错误控制器的一种情况。

这可能只是我做过的蠢事。

您的路线需要这样的路径:/api/streets123 - 其中 params[:name] 等于 "123" 不,这不是错字。

你应该只使用:

get 'api/streets' => 'streets#get_by_name', as: "get_by_name"

如果您需要强制存在 :name 参数,那么您应该使用 the :constraints option.