如何在 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
发送到 SearchController
的 index
操作。字符串 "david:office"
将通过 :query
参数可用。
我真的很努力地想做一条像
这样的路线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
发送到 SearchController
的 index
操作。字符串 "david:office"
将通过 :query
参数可用。