在我的链接中忽略子域参数,因此所有链接都在request.subdomain之前

时间:2014-05-16 13:44:02

标签: ruby-on-rails ruby-on-rails-4 routes subdomain

我有一个Ruby on Rails 4网站,我想在domain.commysubdomain.domain.com中拆分。我正在使用lvh.me进行测试。

我的路线档案:

MyApp::Application.routes.draw do
  scope "(:locale)", locale: /#{I18n.available_locales.join("|")}/ do

    get "first_page" => "pages#first_page", :as => :first_page

    constraints subdomain: "mysubdomain" do
      get "second_page" => "pages#second_page", :as => :second_page
    end

    root :to => 'pages#index'

  end
end

在我的视图文件中,我有:

= link_to "First page",  first_page_path
= link_to "Second page", second_page_path(:subdomain => "mysubdomain")

但显然忽略了subdomain参数。相反,所有链接都以request.subdomain为前缀。

所以,例如,我在:

http://mysubdomain.lvh.me:3000/second_page

然后网页上的链接如下:

http://mysubdomain.lvh.me:3000/first_page   # Not as intended
http://mysubdomain.lvh.me:3000/second_page  # As intended

如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

问题是您使用_path帮助程序而不是_url帮助程序。前者生成相对路径,因此站点将使用当前主机,后者生成完整URL。

= link_to "Second page", second_page_url(subdomain: "mysubdomain")

应该做你正在寻找的事情。