我怀疑这对你来说仍然是一个问题,但我想我会添加一些我发现与此相关的有用的东西。
除了在各种配置文件中添加你的 default_url_options(确保在所有需要它的环境中添加它)之外,你还需要获取整个 url,而不仅仅是路径。
<%= url_for() %>
您可以指定子域或域作为参数,以及其他几个选项(来自 apidock):
url_for(options = nil) public 根据提供的选项、default_url_options 和 routes.rb 中定义的路由生成 url。支持以下选项:
:only_path - 如果为真,则返回相对 url。默认为假。
:protocol - 要连接的协议。默认为“http”。
:host - 指定链接应针对的主机。如果 :only_path 为 false,则必须显式或通过 default_url_options 提供此选项。
:subdomain - 指定链接的子域,使用 tld_length 将子域与主机分开。如果为 false,则从链接的主机部分中删除所有子域。
:domain - 指定链接的域,使用 tld_length 将域与主机分开。
:tld_length - TLD id 组成的标签数量,仅在提供 :subdomain 或 :domain 时使用。默认为 ActionDispatch::Http::URL.tld_length,而后者又默认为 1。
:port - 可选择指定要连接的端口。
:anchor - 要附加到路径的锚名称。
:trailing_slash - 如果为真,添加一个斜杠,如“/archive/2009/”</p>
:script_name - 指定相对于域根的应用程序路径。如果提供,则添加应用程序路径。
给 url_for 的任何其他键(:controller、:action 等)都会转发到 Routes 模块。
我最终使用了带有“_url”结尾的link_to。像这样:
<%= link_to 'Yes', response_approvals_url(t: @secret_token) %>