如何在 rails 中制作可变路线

How to make a variable route in rails

我真的很努力地想做一条像

这样的路线

localhost:3000/api/search/:{this_can_be_anything}

我想点击 search 控制器,并将最后的东西作为变量接收

如果你知道怎么做,请告诉我

编辑: 我没有提到(或意识到很重要)的是 :{this_can_be_anything} 实际上会反映 url 例如 david:office 所以,我希望能够查找类似localhost:3000/api/david:office 并查看相关页面

所有控制器和get/post路由都可以带参数。它们像这样在 url 中传递:

localhost:3000/api/search?q=whatever_you_type_here

在您的控制器中,您可以访问参数哈希

params
=>{q: 'whatever_you_type_here'}

您可以像这样添加多个参数:

localhost:3000/api/search?a=foo&b=bar

现在您的控制器搜索方法将获得参数

params
=>{a: 'foo', b: 'bar'}

您离实际​​语法不远了。这样的东西可能符合要求。

# config/routes.rb
get '/api/search/:query', to: 'api/search#index'
# app/controllers/api/search_controller.rb
module Api
  class SearchController < ApplicationController
    def index
      query = params[:query]
      # ...
    end
  end
end

上面应该将请求 GET /api/search/david:office 发送到 SearchControllerindex 操作。字符串 "david:office" 将通过 :query 参数可用。