我正在創建一個我希望能夠被不同URL訪問的rails 5應用程序。例如,以下兩個URL將由同一個應用提供支持;多個域,一個rails應用程序
- example.com.au
- example.co.nz
讓我們每個我想顯示的鏈接,這些國家主要城市名單的網頁上說。每個主要城市也將擁有自己的頁面;
- example.com.au/sydney
- example.co.nz/auckland
他們將共享相同的數據庫。
這似乎是一個常見問題,但我一直無法找到一個簡單的答案。
任何幫助,非常感謝。
我正在創建一個我希望能夠被不同URL訪問的rails 5應用程序。例如,以下兩個URL將由同一個應用提供支持;多個域,一個rails應用程序
讓我們每個我想顯示的鏈接,這些國家主要城市名單的網頁上說。每個主要城市也將擁有自己的頁面;
他們將共享相同的數據庫。
這似乎是一個常見問題,但我一直無法找到一個簡單的答案。
任何幫助,非常感謝。
可能有更好的方法,但如果你調用request.url,rails會返回當前地址。例如,我們可以使我們的應用控制器如下:
expose(:sydney?)
expose(:auckland?)
def sydney?
request.url.include?('sydney')
end
def auckland?
request.url.include?('auckland')
end
然後在您的視圖:
<% if sydney? %>
<%= Do some stuff %>
<% elsif auckland? %>
<%= Do some other stuff %>
<% else %>
<%= Do stuff for no city %>
<% end %>
記住暴露在你的控制器兩種方法,或者您不能從您的視圖訪問它們。
我「登記」在散中的網址應用的地方:
{
"example.com.au" => "AU",
"example.co.nz" => "NZ",
}
然後,您可以添加在你的控制器的方法,看起來這樣的事情,讓國:
def current_country
domain_name = extract_domain_name(request.original_url)
Settings.domain_country_map[domain_name]
end
如果您使用數據庫來保存城市的國家,您可以在該方法中查找。而且,對於主頁,您可以顯示current_country.cities.popular.limit(5)
或類似的東西。
我還假設你不希望example.co.nz/sydney
工作。在這種情況下,請確保將其範圍限定在國家/地區:當/city_name
網址被擊中時,您執行current_country.cities.find_by(slug: params[:city_slug])
。
爲了使路線/city_slug
工作,你需要這樣的事情在你的路由文件:
得到「/:city_slug」,爲:「城市#秀」
你問如何顯示基於當前域的不同內容? – Beejamin