当在数据库中创建新项目时,我还存储了一个可以被引用以共享项目的链接。我存储以下变量。
self.shareLink = "http://localhost:3000/#{self.slug}"
我在使用典型的Root函数时遇到问题,因为它排除了“http://”部分。
因为它硬编码,我觉得我做错了,因为当我最终投入生产时需要更新localhost。
我正在使用Heroku并开始尝试使用已定义的环境变量加入self.slug,但这也感觉不正确,我想知道是否有人可以提供一些见解。
答案 0 :(得分:0)
尝试:
self.shareLink = request.protocol + request.host_with_port + '/' + self.slug
或者如果您不想要端口:
self.shareLink = request.protocol + request.host + '/' + self.slug
<强>更新强>
由于您现在声明在模型中需要此功能,因此上述功能不起作用,因为模型无法访问请求。
因此,您可以将其添加到应用程序控制器中,以使其随处可用:
before_filter :save_request
def save_request
Thread.current[:request] = request
end
然后在你的模型中做这样的事情来访问它:
def my_method
request = Thread.current[:request]
self.shareLink = request.protocol + request.host_with_port + '/' + self.slug
end