我按照Railscast将子域名添加到Rails应用程序here,并且所有内容都适用于子域名。现在,如果请求的子域不存在,我就无法找到一种在没有子域的情况下链接回根域的方法。
我已尝试将以下内容添加到我的application_controller.rb
文件
redirect_to root_path(subdomain: false) if @city_or_state.nil?
其中@city_or_state
确定所请求的子域有效的天气。 redirect_to
返回到根目录,但不会删除子域。
例如,如果用户尝试转到invalid.domain.com
,则会将其重定向到根目录,但不会删除子域。
我正试图让invalid.domain.com
重定向到domain.com
答案 0 :(得分:4)
好的,我明白了。我不得不使用以下内容:redirect_to root_url(:host => request.domain)
当我尝试root_path(:host => request.domain)
时,它无效。仅适用于root_url
。
我找到了Daniel Kehoe here
的一些评论的答案尝试访问不存在的域时,将从URL中删除无效的子域。
答案 1 :(得分:2)
你可以尝试这种方式,我认为它的工作原理!
在application_controller.rb中,您可以添加before_filter :validate_subdomain
然后将此代码添加到控制器:
private
def validate_subdomain
# @city_or_state must be initialized before this
if @city_or_state.nil?
redirect_to request.domain
end
end