gpt4 book ai didi

ruby-on-rails-3 - RuntimeError default_url_options 主机和 root_url(带子域)

转载 作者:行者123 更新时间:2023-12-02 02:26:52 35 4
gpt4 key购买 nike

我的应用程序的每个用户都有一个自定义 url(通过子域)存储在 db 中。

我的请求很简单,我想通过 json 提要发送“用户 url”,如下所示:

{user_name: "vincent", :user_url: "vincent.my_app.com"}

为此,我覆盖了用户模型的 as_json 函数:

def as_json(options={})
{
:user_name: self.name,
:user_url: root_url(:subdomain => self.subdomain)
}
end

我有这个附加模块(这很好用,不是真正的问题):

module SubdomainHelper
def with_subdomain(subdomain)
subdomain = (subdomain || "")
subdomain += "." unless subdomain.empty?
host = ActionMailer::Base.default_url_options[:host]
[subdomain, host].join
end

def url_for(options = nil)
if options.kind_of?(Hash) && options.has_key?(:subdomain)
options[:host] = with_subdomain(options.delete(:subdomain))
end
super
end
end

但是当我得到 json feed 时我有这个错误:

RuntimeError (Missing host to link to! Please provide :host parameter or set default_url_options[:host]):

指向用户模型的“as_json”方法。

当然,每个环境都在 dev.rb 中实现了 default_url_options:

config.action_mailer.default_url_options = {:host => 'my_app:3000'}

我不明白为什么以及如何修复它。请帮助我。

最佳答案

我遇到了类似的问题。不知何故,它似​​乎与 actionpack 的 url_helper 和我的字段名称有关。似乎以 *_url 结尾的字段名称存在问题。不完全明白为什么,但我有一个名为 login_url 的字段,我将其重命名为 login_uri(注意从 l 到 i 的变化),它解决了我的问题。

关于ruby-on-rails-3 - RuntimeError default_url_options 主机和 root_url(带子域),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5595921/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com