模型中Rails应用程序的基本URL

时间:2013-04-30 17:14:16

标签: ruby-on-rails ruby controller request

为了能够看到用户是否在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方法是正确的,还是应该将它放在帮助器中?

由于

2 个答案:

答案 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}"获取网址。