2

我按照 Railscast 将子域添加到 Rails 应用程序,在这里,一切都很好地与子域一起工作。现在,如果请求的子域不存在,我只是想不出一种在没有子域的情况下链接回根域的方法。

我尝试将以下内容添加到我的application_controller.rb文件中

redirect_to root_path(subdomain: false) if @city_or_state.nil?

where@city_or_state确定请求的子域是否有效。回到redirect_to根目录,但不删除子域。

例如,如果用户尝试访问,invalid.domain.com他们会被重定向到根目录,但不会删除子域。

我正在尝试invalid.domain.com重定向到domain.com

4

2 回答 2

4

好,我知道了。我不得不使用以下内容:redirect_to root_url(:host => request.domain)

当我尝试root_path(:host => request.domain)它没有工作。仅适用于root_url.

我在这里找到了 Daniel Kehoe 的一些评论的答案

尝试访问不存在的域时,将从 URL 中删除无效的子域。

于 2013-04-30T23:01:10.417 回答
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
于 2013-04-30T16:39:18.780 回答