强制子域和删除子域

Bra*_*sen 5 ruby-on-rails ruby-on-rails-3

我正在编写一个将使用basecamp样式子域的应用程序(参见文章).

应用程序的某些部分应始终位于子域中,而部分应永远不应位于子域中.例如,"主页"页面永远不应位于子域中,但博客和帖子资源应该始终存在.请注意,我不知道子域名,因为每个帐户都有一个子域名.

我设置了这样的路线(例子).它运行良好,因为它匹配路线,但我很难强迫我的应用程序链接到正确的位置.

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
Run Code Online (Sandbox Code Playgroud)

问题是,一旦我在子域中,所有到其他页面(类别等)的链接都包含子域.我不确定最好解决这个问题.非常感谢你的帮助.

tal*_*ric 7

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

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

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

ASCIIcasts:http://asciicasts.com/episodes/221-subdomains-in-rails-3

然后你可以这样做:

<p><%= link_to "All Blogs", root_url(:subdomain => false) %></p>  
Run Code Online (Sandbox Code Playgroud)