3

我有 2 张桌子newsnews_type. 此外,我有 3 种基本类型的新闻:政治、技术和体育。如何按子域过滤这些数据?

例如:

如果我去,example.com我会在我的主页上看到所有新闻

如果我去sport.example.com我会得到所有类型的新闻sport

等等。

4

2 回答 2

1

在您的 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
于 2013-09-26T16:25:08.073 回答
0

感谢 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

需要注意的是,这需要在您的传统根声明之上进行声明。

于 2013-10-04T09:27:17.403 回答