如何使用link_to转到子域

时间:2017-09-13 17:08:10

标签: ruby-on-rails routes link-to

我无法使用link_to转到我的帖子/索引页面。我有以下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引用的实际页面)时,链接有效,但是当我放入任何其他页面(例如,root_path)时,它不起作用。我收到No route matches [GET] "/posts"错误,我认为这意味着子域未在我的link_to中传递。有关如何做到这一点的任何想法?感谢。

2 个答案:

答案 0 :(得分:1)

尝试posts_url,而不是posts_path

即使没有(subdomain:"news"),它在我的项目中也能正常工作。只需直接使用posts_url

答案 1 :(得分:1)

如果没有别的办法,你可以完全跳过帮手:

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteCond %{THE_REQUEST} !/exchange
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} on
RewriteCond %{THE_REQUEST} /exchange
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?path=$1 [NC,L,QSA]

要使它在开发和生产中都有效,你可以在<%= 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_linkconfig中配置config/environments/development.rb变量。