如何解决强制子域和删除子域
| 我正在编写一个将使用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
问题是,一旦进入子域,到其他页面(类别等)的所有链接都包含该子域。我不确定解决此问题的最佳方法。非常感谢你的帮助。解决方法
看起来可以通过重写
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>
,我认为问题的关键在于您需要使用resource_name_url而不是resource_name_path。
路径仅提供相对URL(/ accounts)与url的相对关系,而URL返回完整的路径(www.example.com/accounts)。
希望能有所帮助,
安德鲁,可能会有更好的方法,我很想知道是否存在,但是为此我开始做的是在配置中设置基本域名(不是Rails conf,而是我自己的应用配置),然后覆盖“ 4”助手来始终转到基本域名。显然,您可以为该方法使用其他名称,但是我从来没有使用ѭ5来表示其他任何名称,因此我将其保留为Rails式命名。版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。