У каждого пользователя моего приложения есть собственный URL (через поддомен), который хранится в БД.
Мой запрос прост, я хотел бы отправить "URL пользователя" через фид json, например:
{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, у меня появляется эта ошибка:
RuntimeError (Missing host to link to! Please provide :host parameter or set default_url_options[:host]):
указывает на метод as_json пользовательской модели.
конечно, каждая среда реализует default_url_options, в dev.rb:
config.action_mailer.default_url_options = {:host => 'my_app:3000'}
Я не понимаю, почему и как я это исправляю. Пожалуйста, помогите мне.