Как сделать переменный маршрут в рельсах - PullRequest
2 голосов
/ 05 октября 2019

Я действительно изо всех сил пытаюсь создать маршрут, подобный

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

Я хочу поразить контроллер search, и последняя вещь будет принята как переменная

пожалуйста, дайте мне знать, если вы знаете, как это сделать

РЕДАКТИРОВАТЬ: То, что я не упомянул (или понимаю, было бы важно), это то, что :{this_can_be_anything} на самом деле будет отражать URL, такой какdavid:office Итак, я хочу иметь возможность посмотреть что-то вроде localhost:3000/api/david:office и увидеть соответствующую страницу

Ответы [ 2 ]

2 голосов
/ 05 октября 2019

Вы не далеко от фактического синтаксиса. Нечто подобное может соответствовать требованиям.

# 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 на index действие SearchController. Строка "david:office" будет доступна через параметр :query.

1 голос
/ 05 октября 2019

Все контроллеры и маршруты получения / отправки могут принимать параметры. Они передаются в 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'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...