【问题标题】:Forcing Subdomains and Removing Subdomains强制子域和删除子域
【发布时间】:2011-04-18 23:44:35
【问题描述】:

我正在编写一个将使用 basecamp 样式子域 (See post) 的应用程序。

应用程序的某些部分应始终位于子域中,而某些部分应从不位于子域中。例如,“主页”页面永远不应位于子域中,但博客和帖子资源始终应位于子域中。请记住,我不知道子域,因为每个帐户都有一个。

我这样设置路线(示例)。它运行良好,因为它与路线匹配,但我很难强制我的应用链接到正确的位置。

MyApp::Application.routes.draw do

  # these should all route to mysubdomain.myapp.com
  # Clicking on a post from myapp.com/categories/12 should take you to mysubdomain.myapp.com/posts/14
  constraints(Subdomain) do
    resources :blogs { resources :posts }
  end

  # these should all route to myapp.com (clicking on one of these links from mysubdomain.myapp.com should go to myapp.com/categories/12)
  constraints(NoSubDomain) do
    resources :categories
  end

end

问题是,一旦我进入子域,所有指向其他页面(类别等)的链接都包含子域。我不确定解决此问题的最佳方法。非常感谢您的帮助。

【问题讨论】:

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


    【解决方案1】:

    我认为您的问题的关键是您需要使用 resource_name_url 而不是 resource_name_path。

    Path 只为您提供相对 URL (/accounts) 与返回完整路径 (www.example.com/accounts) 的 url。

    希望对你有帮助,

    安德鲁

    【讨论】:

    • 刚刚试过。除非我只是感到困惑,否则问题是您无法设置原始网址,因此没有多大作用。
    【解决方案2】:

    看起来可以通过覆盖 url_for 方法以包含 :subdomain 选项来完成。

    请参阅 RailsCasts #221 的清理代码以更改子域部分。

    Railscasts:http://railscasts.com/episodes/221-subdomains-in-rails-3

    ASCII 广播:http://asciicasts.com/episodes/221-subdomains-in-rails-3

    然后你可以这样做:

    <p><%= link_to "All Blogs", root_url(:subdomain => false) %></p>  
    

    【讨论】:

    • 我喜欢这个建议,而且我之前在网上看到过,但是,我需要做以下两件事之一 - 覆盖并将默认设置为 false,然后传入所有子域我的链接,反之亦然。我希望 Rails 能从我的路由文件中得到提示,毕竟,这就是它的用途......
    • 我知道它基本上可以正常工作,但是您想确保特定路径(例如“home”)没有子域。我认为您可以在这些链接上使用此覆盖 (:subdomain => false),并将其余部分保持原样。 (如果您不传递 :subdomain 作为选项,现有功能将保持不变。)
    【解决方案3】:

    可能有更好的方法来做到这一点,我很想知道是否有,但我已经开始为此做的是在我的配置中设置基本域名(不是 Rails conf,而是我自己的应用程序配置),然后覆盖 root_url 帮助程序以始终转到基本域名。显然,您可以为该方法使用另一个名称,但我从不使用 base_url 来表示其他任何东西,所以我保留了它的 Rails 式命名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-19
      相关资源
      最近更新 更多