Специфическая рубиновая маршрутизация - PullRequest
2 голосов
/ 18 февраля 2012

В настоящее время разрабатывается мобильное веб-приложение RoR для отображения информации о конкретных местах.

Давайте назовем эти места «инсталляциями».Каждая установка имеет как минимум одно «место проведения», которое является конкретным экземпляром установки.Так, например, инсталляция может быть городским парком, а одним из соответствующих мест может быть парк во время концерта или мероприятия.Если этот пример сбивает с толку, не обращайте внимания, это не имеет большого значения.

Данные для этих установок и соответствующих мест их размещения хранятся в Amazon Web Service S3 в виде объектов json.Я использую HTTParty для чтения в объектах AWS S3 json.Я сейчас читаю их примерно так:

В контроллере приложения у меня есть:

inlcude HTTParty
base_uri 's3.amazonaws.com/our_bucket'
before_filter :set_up_httparty

def set_up_httparty
  @installation = "INSTALLATION"
  @venue = "VENUE"
  @dir_url = "/#{@installation}/#{@venue}/"
end

В соответствующих контроллерах, где я получаю отдельную информацию, у меня есть:

response =
  ApplicationController.get("#{@dir_url}/ConstantUniqueName.json")

В настоящее время я жестко программирую значения INSTALLATION и VENUE, чтобы указать на определенный набор папок.Это прекрасно работает, но мне нужно иметь возможность получать эти значения из URL-адреса следующим образом:

www.themobilewebapp.com/INSTALLATION/VENUE/index

Теперь я уверен, что, скорее всего, возможно передать эти значения с такими параметрами:

www.themobilewebapp.com/index?installtion=INSTALLATION&venue=VENUE

Но, если возможно, я бы хотел настроить свой URL-адрес по-другому.Мне нужно, чтобы URL-адреса были удобны для пользователей, чтобы QRC-коды указывали непосредственно на конкретную установку и соответствующее место.

Если невозможно сделать что-то вроде www.mobwebapp.com/INSTALL/VEN/index, то можно ли настроить субдомены для каждого места, а затем добавить это место в виде строки?

Любая помощь приветствуется!Спасибо!

1 Ответ

2 голосов
/ 18 февраля 2012

Если вы поместите это в файл config/routes.rb, вы сможете использовать нужный шаблон URL:

match ':installation/:venue/index', :controller => :venue, :action => :index
...