Rails 3 與 Subdomain 的初次邂逅

終於成功解決掉這個問題了 ... 在進行這個操作之前請先到 /etc/hosts 內手動新增對應:

127.0.0.1 site1.product.local site3.product.local

請務必寫上這樣,我一開始寫成 site1.local 時會一直發生找不到根目錄的問題,所以必須這樣寫。

然後要做的就是在 config/rotues.rb 內修改一下,加上 constraints({subdomain: "site1"}) do ... end 這樣,假設:

  constraints({subdomain: "site1"}) do
    resources :users
  end

  constraints({subdomain: "site2"}) do
    resources :users
  end

即可

但是必須注意的是,如果你原本是使用Namespace的話,就必須加上 scope module: :xxx 這個Block,如下:

  constraints({subdomain: "site1"}) do
    scope module: "site1" do
      resources :users
    end
  end

  constraints({subdomain: "site2"}) do
    scope module: "site2" do
      resources :users
    end
  end

如此一來,原本是 /site1/users 會變成 site1.product.local/users 並且指定到 app/controllers/site1/users_controller.rb 了。

Comments

comments powered by Disqus