为了能够看到用户是否在Facebook上分享了我的页面,我希望能够创建这种URL:
http://graph.facebook.com/?id=http://stylehatch.co/some_unique_user_token
http://stylehatch.co需要作为我的基本网址。我正在考虑在User模型中创建一个将构建并返回该URL的方法,但我无法从模型中访问root_url。
如何从模型中获取应用程序的基本URL?
说我的网址是这样的:
http://myapp.com/users/new
http://myapp.com/users/2/show
如何从我的模型中获取“http://myapp.com”?我添加了:
include Rails.application.routes.url_helpers
在我的模型中,但似乎root_url是零。有什么想法吗?这是一个Model方法是正确的,还是应该将它放在帮助器中?
由于
答案 0 :(得分:13)
如果您想在模型中获取根URL,我所做的就是调用ENV变量。
如果您还没有,请继续在您的应用程序的根目录中创建.env并在开发中设置为:
ROOT_URL=http://localhost
在您的生产环境中设置:
ROOT_URL=https://mydomain.com
当然这是硬编码的,所以陷阱是你需要记住在更改域时更改这一点,并且每个环境的文件必须不同。
请确保这也存在于您的gitignore中,因为其他敏感数据将存储在此处。
在你的模特中你打电话: ENV [ 'ROOT_URL']
答案 1 :(得分:2)
您不希望模型知道网址。但是在控制器中你有一个名为request
的对象。您可以通过"#{request.protocol}#{request.host}"
获取网址。