Строка запроса в route.rb - PullRequest
       11

Строка запроса в route.rb

0 голосов
/ 07 декабря 2018

Я хотел бы добавить еще один явный параметр запроса к моему маршруту.

Сейчас у меня есть это:

Rails.application.routes.draw do
  scope :format => true, :constraints => {:format => :json} do
    get     'proxies/random(?type=:proxy_type)'   => 'proxies#random'

Что я хочу сделать, это добавить еще один (?origin=:origin)параметр запроса.Я просто не могу найти какую-либо документацию или примеры по этому поводу.

Я верю, что у меня должно быть что-то вроде этого:

Rails.application.routes.draw do
  scope :format => true, :constraints => {:format => :json} do
    get     'proxies/random(?type=:proxy_type&origin=:origin)'   => 'proxies#random'

или, может быть, это:

Rails.application.routes.draw do
  scope :format => true, :constraints => {:format => :json} do
    get     'proxies/random(?type=:proxy_type)(?origin=:origin)'   => 'proxies#random'

Какой правильный способ сделать это?

Кстати, вот что я делаю в моем контроллере:

  [...] 
  before_filter :find_randomly, only: :random
  [...]

  def find_randomly
    if params[:origin].nil? or params[:origin].blank?
      relation = ProxiesCatalogueProxy.where(blacklisted: false)
    else
      relation = ProxiesCatalogueProxy.where(blacklisted: false, origin: params[:origin])
    end

    @proxy = if params[:type].nil? or params[:type].blank?
              relation.order("RAND()").first
            else
              relation.where(proxy_type: params[:type]).order("RAND()").first
            end

  end

Кроме того, кто-то может предоставить какой-либо хороший ресурс /материал на эту тему?Thx.

1 Ответ

0 голосов
/ 07 декабря 2018

Если вы хотите жестко закодировать параметры в ваших маршрутах, вы можете сделать что-то вроде:

get 'proxies/random(?type=:proxy_type)' => 'proxies#random', origin: 'some value'

Это не повлияет на сопоставление URL и добавит источник в ваш хэш параметров, доступный всоответствующий контроллер и действие как params[:origin].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...