如何使用 link_to 转到子域

How to use link_to to go to a subdomain

我在使用 link_to 转到我的 posts/index 页面时遇到问题。我有以下 link_to:

<%= link_to('NEWS', posts_path(subdomain:"news"),:class=>'navtext',:style=>"color:#bfbebc!important;")  %>

我的路线:

  resources :posts , constraints: { subdomain: 'news' }

当我在 http://news.lvh.me:3000/posts(link_to 所指的实际页面)时,link 有效,但是当我放置在任何其他页面(例如,root_path) 它不起作用。我收到 No route matches [GET] "/posts" 错误,我认为这意味着子域未在我的 link_to 中传递。关于如何做到这一点的任何想法?谢谢。

尝试 posts_url,而不是 posts_path

即使没有 (subdomain:"news"),我的项目也能正常工作。直接用posts_url就可以了。

如果没有其他效果,您可以完全跳过帮助程序:

<%= link_to('NEWS', subdomain_link,:class=>'navtext',:style=>"color:#bfbebc!important;")  %>

为了使其在开发和生产中都能正常工作,您可以在 application_helper.rb:

中编写一个辅助方法
def subdomain_link
  Rails.env.development? ? '//whatever.localhost:3000' : '//news.whatever.com'
end

更进一步,您可以配置 subdomain_link 接受字符串作为参数并将其插入到域字符串中。另一种方法是在 config/environments/development.rbconfig/environments/production.rb.

中配置一个 config 变量