LINUX.ORG.RU

Ruby on Rails роутинг

 


0

1

Прошлая тема rails routes переменные не дала ответа, попробую перефразировать.

И так есть 2 урла

http://test.ru?var=test1
http://test.ru?var=test2

Нужно в RoR первый урл обработать методом одного контроллера, а второй урл обработать методом другого контроллера. То есть отправлять запрос на разные контроллеры в зависимости от значения var. Как это можно сделать?

★★★★★

А зачем так делать? Чем плохо в хендлере в зависимости от значения параметра выполнять ту или иную логику?

Hater ★★ ()
Ответ на: комментарий от Hater

А зачем так делать? Чем плохо в хендлере в зависимости от значения параметра выполнять ту или иную логику?

В каком хендлере? Нужно в разных контроллерах потому что логики очень много и она абсолютно разная для этих двух урлов.

TDrive ★★★★★ ()
Ответ на: комментарий от Hater

Кстати, такие темы лучше создавать в Web-development.

Затупил, перенесите кто может.

TDrive ★★★★★ ()

В прошлой теме тебе сказали, как это сделать. Или для тебя принципиально, чтобы диспетчеризация была в routes.rb?

Apple-ch ★★ ()
Ответ на: комментарий от Apple-ch

В прошлой теме тебе сказали, как это сделать. Или для тебя принципиально, чтобы диспетчеризация была в routes.rb?

Мне пренципиально чтобы разные контроллеры обрабатывали эти урлы. В прошлой теме я ответа не вижу.

TDrive ★★★★★ ()
Ответ на: комментарий от TDrive

Ну можно например сделать редирект на правильные урлы. Ну или там в веб-сервере можно сделать rewrite наверное.

Hater ★★ ()
Ответ на: комментарий от Hater

Ну можно например сделать редирект на правильные урлы. Ну или там в веб-сервере можно сделать rewrite наверное.

редирект нельзя потому что параметры get/post теряются.

TDrive ★★★★★ ()

думаю, что ты понимаешь, что это все очень криво)

можно настроить проксю перед рельсами, чтобы получались нормальные урлы. или сделал бы фильтр в ApplicationController и редиректил куда надо.

kelyar ★★★★★ ()
Ответ на: комментарий от TDrive

Упс, май бэд, действительно вменяемого ответа нет.

Давай я попробую помочь. Количество параметров ограничено и заранее известно?

Apple-ch ★★ ()
Ответ на: комментарий от Apple-ch

Давай я попробую помочь. Количество параметров ограничено и заранее известно?

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

TDrive ★★★★★ ()
Ответ на: комментарий от TDrive

Я это и имел в виду. Если список вызываемых контроллеров/экшнов заранее известен, то проще всего использовать констрейнты:

class VarConstraint
  def initialize(value)
    @value = value.to_s
  end

  def matches?(request)
    request.params[:var] == @value
  end
end

И прописать для каждого значения вот так:

Rails.application.routes.draw do
  get '/', constraints: VarConstraint.new(:test1), to: Test1Controller.action('test1')
  get '/', constraints: VarConstraint.new(:test2), to: Test2Controller.action('test2')
end
Apple-ch ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.