【问题标题】:How to make a variable route in rails如何在rails中制作可变路线
【发布时间】:2019-10-05 13:14:36
【问题描述】:

我真的很难做出这样的路线

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

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

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

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

【问题讨论】:

    标签: ruby-on-rails ruby http routing


    【解决方案1】:

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

    # 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 参数获得。

    【讨论】:

      【解决方案2】:

      所有控制器和 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'}
      

      【讨论】:

      • 感谢您回复我,如果对我没有附加限制,这将起作用:编辑:我没有提到(或意识到这很重要)是 :{this_can_be_anything} 是实际上会反映诸如david:office之类的网址所以,我希望能够查找localhost:3000/api/david:office之类的内容并查看相关页面
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-24
      • 2014-12-31
      • 2023-02-17
      • 1970-01-01
      • 2015-10-11
      • 2015-05-06
      • 1970-01-01
      相关资源
      最近更新 更多