我有一個包含幾個不同鏈接的ActionMailer的視圖。我運行它在localhost:3000,現在,所以我設置爲這樣的文件在app /初始化稱爲setup_mail.rb
(指示here):url_for未使用default_url_options [:host]值
ActionMailer::Base.default_url_options[:host] = "localhost:3000"
當我去使用url_for
在這個觀點,它似乎並沒有拉這個價值。如果我然後將:host => "localhost:3000"
添加到每個url_for
標記,它們都可以正常工作。但是如果沒有包括在內,它們就無法運作
我還有一個標籤,project_url
,這是因爲它出現:一個鏈接到指定的項目。這起作用,包括主機值,只有project_url(@project)
。爲什麼一個人會工作,而不是另一個?
從我讀過的所有內容中,在初始值設定中設置default_url_options[:host]
應該允許我省略url_for
標記中的:host
值。顯然,增加價值並不是世界上最糟糕的事情,但似乎沒有必要,這意味着當我最終將項目託管到某個地方時,我將不得不經歷並改變整個地方的價值。但更糟糕的是,這是我不明白的。我仍然在學習,所以我想知道我做錯了什麼。
所以我在這裏收集的是我無法真正避免額外的參數 - 我可以避免多次複製主機。但是很少弄亂這個方法,或者創建一個新的方法,我將不得不在每個'url_for'標籤中使用':host'或':only_path'。儘管這不適用於像'project_path'這樣的東西?這太糟糕了。 –
如果您像我描述的那樣創建自己的助手,或者使用猴子補丁'url_for'來重載默認':only_path'選項,並選擇直接使用'url_for',那看起來是正確的。在我的應用程序中,我很少需要'url_for',所以它從來都不是我真正關心的問題。 – deefour