如果子域不存在,如何重定向请求?

时间:2013-04-27 15:27:01

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

我已根据this Railscast设置了包含子域的当前项目。我有两个模型StateCity,每个模型的数据集中都有一个:subdomain字段。如果用户输入与此:subdomain匹配的子域,则会显示相应的内容。

如果StateCity模型中的子域不存在,如何重定向请求?例如,我希望将blue.domain.com重定向到rails_root

如果请求的域名不存在,有人可以就如何重定向提供一些指导吗?

2 个答案:

答案 0 :(得分:2)

如果您的控制器,您需要在找到城市或州的位置添加before_filter,然后在未找到的情况下重定向。类似的东西:

before_filter :find_subdomain

def find_subdomain
  @city_or_state = City.find_by_subdomain(request.subdomain) || State.find_by_subdomain(request.subdomain)
  redirect_to root_path(subdomain: false) if @city_or_state.nil?
end

答案 1 :(得分:1)

这只是另一种方法:

before_filter :find_subdomain

private
def find_subdomain
  @city_or_state = City.find_by_subdomain(request.subdomain) || State.find_by_subdomain(request.subdomain)
  redirect_to request.domain if @city_or_state.nil?
end