我有 2 张桌子news
和news_type
. 此外,我有 3 种基本类型的新闻:政治、技术和体育。如何按子域过滤这些数据?
例如:
如果我去,example.com
我会在我的主页上看到所有新闻
如果我去sport.example.com
我会得到所有类型的新闻sport
等等。
我有 2 张桌子news
和news_type
. 此外,我有 3 种基本类型的新闻:政治、技术和体育。如何按子域过滤这些数据?
例如:
如果我去,example.com
我会在我的主页上看到所有新闻
如果我去sport.example.com
我会得到所有类型的新闻sport
等等。
在您的 routes.rb 文件中,您可以提供路径约束。例如:
# routes.rb
...
get "/" => "sports#index", constraints: { domain: "sport.example.com" }
get "/" => "tech#index", constraints: { domain: "tech.example.com" }
root :to => 'static#index'
这将路由
sport.example.com
对内的index
行动SportsController
tech.example.com
对内的index
行动TechsController
example.com
对内的index
行动StaticController
感谢 Tyler 的回答,但是我遇到了一种约束方法,它允许为子域提供更动态的解决方案,例如分配给 news_item 的标签,即:“rugby.example.com”将获取所有带有 rugy 标签的 news_item .
# routes
constraints(Subdomain) do
match "/" => "news_items#index"
end
#lib/subdomain.rb
class Subdomain
def self.matches?(request)
request.subdomain.present? && request.subdomain != "www"
end
end
# news_items_controller.rb
def index
@item_tag = ItemTag.find_by_title(request.subdomain)
@news_items = @item_tag ? @item_tag.news_items : NewsItem.all
end
需要注意的是,这需要在您的传统根声明之上进行声明。