【发布时间】:2016-06-26 11:38:01
【问题描述】:
我在网上搜索了一些对我有所帮助的答案,但是我仍然卡住了,所以就这样吧。
我是一个 Rails 4 应用程序,它允许用户创建传记/博客,然后使用自己的域访问它。
用户可以从几个预制的网站模板(主页、关于我的页面、我的爱好页面等)中进行选择,然后使用 CMS 加载他们的内容。当访问者访问他们的域时,内容将使用他们选择的模板显示。
例如:
用户 1:
域名:www.user1.com
模板:模板 A
用户 2:
域名:www.user2.com
模板:模板 B
期望的结果
当访问者访问 www.user1.com 时,他们将看到主页。当他们点击“关于我”时,他们将被重定向到 www.user1.com/about-me。如果访问者访问用户 2 的“关于我”页面,他们将看到 www.user2.com/about-me。
我的问题是,我该如何设置?
基于此答案:Rails routing to handle multiple domains on single application
class Domain
def self.matches?(request)
request.domain.present? && request.domain != "mydomain.com"
end
end
------in routes.rb------
require 'subdomain'
constraints(Domain) do
match '/' => 'blogs#show'
end
我知道我可以将与我的域不同的域路由到单独的控制器,但是,我需要将它路由到可以随时更改的不同模板控制器(用户可以随意更改模板)。
我知道我可以设置一个可以读取传入请求的通用控制器,然后根据主机名,我可以提取适当的模板,然后将请求重定向到该模板的控制器(例如:Template1Controller),但是 url 变得混乱向上,变成像“/template/template1/index”或“/template/template1/about-me”这样的东西,非常糟糕和丑陋。此外,处理特定于某些模板的路径将非常棘手(模板 A 可能有一个“我的简历”页面,而模板 B 可能有一个“家族历史”页面)。
有没有办法做到这一点?
我考虑过一种方法,我有一个控制器来处理所有事情(没有重定向),然后只调用render template1/index,但我认为这是一种不好的方法(不同的模板可能需要不同的数据每页)。
顺便说一句,这将托管在 EC2 上。
编辑 我想要实现的与这个问题 Mapping multiple domain names to different resources in a Rails app 非常相似,但不幸的是没有答案。我希望 5 年后,有人可能知道如何完成这项工作。
谢谢!
【问题讨论】:
标签: ruby-on-rails amazon-web-services