特定的Ruby on Rails路由deliema

时间:2012-02-17 22:37:20

标签: ruby-on-rails ruby routes httparty custom-routes

目前正在开发用于显示特定地点信息的RoR移动网络应用程序。

我们称这些地方为“装置”。每个安装都至少有一个“场所”,这是安装的特定实例。因此,例如,安装可以是城市公园,并且其中一个相应的场地可以是音乐会或活动期间的公园。如果这个例子令人困惑,无视,那也无关紧要。

这些安装及其相应场所的数据作为json对象托管在Amazon Web Service S3上。我使用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友好,让用户自己放入并让QRC代码直接指向特定的安装和相应的场地。

如果无法做到像www.mobwebapp.com/INSTALL/VEN/index这样的事情,那么是否可以为每个场地设置子域名,然后将该场地拉成一个字符串?

任何帮助表示赞赏!!谢谢!

1 个答案:

答案 0 :(得分:2)

如果您将其放在config/routes.rb文件中,那么您将能够使用所需的网址格式:

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