2
我正在將Rails 3應用程序遷移到Rails 4.對於我們的應用程序,我們有兩個頂級域用於我們的英文網站和日文網站。要動態鏈接到相應的網站,我們正在擴展url_for,如下所示用Rails連接到url_for 4
module I18nWwwUrlFor
def url_for(options=nil)
if options.kind_of?(Hash) && !options[:only_path]
if %r{^/?www} =~ options[:controller]
options[:host] = i18n_host
end
end
super
end
end
OurApplication::Application.routes.extend I18nWwwUrlFor
在Rails 4下,這不起作用。這是因爲命名路由現在直接調用ActionDispatch :: Http :: URL.url_for,它會接受選項並生成一個URL。理想情況下,我想擴展這個url_for,但沒有任何掛鉤,所以我留下了用alias_method_chain修補猴子。我錯過了什麼,有沒有更好的方式來做到這一點?
嗯,只有_path助手調用url_for。我們正在使用_url,它不再通過url_for。所以root_path會像你顯示的那樣工作,但是root_url不會。 –
你使用'_url'方法的任何原因? – AJcodez
因爲通常在需要完整URL時使用_url,而_path是針對相對路徑。 –