我有一个ActionMailer的视图,其中包含几个不同的链接。我现在正在localhost:3000上运行它,因此我在app/initializers中的名为setup_mail.rb
的文件中设置了如下内容(如此处所示):
ActionMailer::Base.default_url_options[:host] = "localhost:3000"
当我在视图中使用
url_for
时,它似乎无法提取此值。如果我在每个url_for
标签中添加:host => "localhost:3000"
,它们就可以正常工作。但是没有包含这个值就不能正常工作。我还有另一个标记
project_url
,它就像它的样子一样:链接到指定的项目。这个函数可以正常工作,包括主机值,只需要使用project_url(@project)
。为什么一个可以工作而另一个不行呢?根据我所读的所有内容,在初始化程序中设置
default_url_options[:host]
应该允许我省略url_for
标签中的:host
值。显然,这并不是世界上最糟糕的事情,但它似乎是不必要的,并且意味着当我最终在某个地方托管项目时,我将不得不去修改所有这些值。更糟糕的是,我不理解这个问题。我仍在学习过程中,所以我想知道我做错了什么。
url_for
标记中使用:host
或:only_path
。即使对于像project_path
这样的东西也不适用?这有点令人失望。 - Ben Saufleyurl_for
本身以重载默认的:only_path
选项,并选择直接使用url_for
,那么这似乎是正确的。在我的应用程序中,我很少需要url_for
,所以这从来不是一个真正的问题。 - deefour