代码之家  ›  专栏  ›  技术社区  ›  Ola Tuvesson

Rails到模型实例的路由-按域名

  •  2
  • Ola Tuvesson  · 技术社区  · 16 年前


    1) 用nginx重写URL,在域名后插入区域id(例如birminghamhotels.co.uk=>proxy\u pass http://myupstream/areas/3

    优点: 域到对象的映射发生在定义了可接受域的地方:nginx.conf对用户应该是透明的(重写时可能会有漂亮的URL)。

    断开Rails url帮助程序,不再链接到或形成。硬编码的对象引用很淘气。


    2) 在路由中捕获域名。rb并通过每个区域的唯一“domain”属性查找该区域(如果您喜欢,甚至可以使用has_many)。

    优点:

    缺点: 如果不使用nginx重写url,用户难道不会看到:birminghamhotels.co.uk/areas/3/hotels/42,而不仅仅是birmingamhotel.co.uk/hotel/42吗?而且,我不知道该怎么做!


    因此,我尝试了选项#1,但遇到了URL帮助程序等问题。我试图想出一种尝试选项Ş2的方法,但尽管有很多眼神,但仍然无法使用正确的语法。现在,我无法通过搜索找到任何答案,这让我觉得我搞错了这个问题。还有第三种选择吗?你会怎么解决?

    哦,顺便说一句,我没有建立另一个酒店上市网站-周围已经有足够多的。恰好是一个足够接近的例子。

    1 回复  |  直到 16 年前
        1
  •  1
  •   aNoble    16 年前

    假设每个区域都有某种类型的domain\u name字段,您似乎应该能够执行以下操作:

    class HotelsController < ApplicationController
      def index
        @hotels = Area.find_by_domain_name(request.subdomains.first).hotels
      end
    end