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

Hom*_*ith 8 ruby controller ruby-on-rails request

为了能够看到用户是否在Facebook上共享了我的页面,我希望能够创建这种URL:

http://graph.facebook.com/?id=http://stylehatch.co/some_unique_user_token
Run Code Online (Sandbox Code Playgroud)

http://stylehatch.co将需要我的基本URL.我正在考虑在User模型中创建一个将构建并返回该URL的方法,但我无法从我的模型中访问root_url.

如何从模型中获取应用程序的基本URL?

如果我的网址看起来像这样:

http://myapp.com/users/new

http://myapp.com/users/2/show
Run Code Online (Sandbox Code Playgroud)

如何从我的模型中获取" http://myapp.com "?我已经添加了:

  include Rails.application.routes.url_helpers
Run Code Online (Sandbox Code Playgroud)

在我的模型中,但似乎root_url是零.有什么想法吗?这是一个Model方法是正确的,还是应该将它放在帮助器中?

谢谢

ear*_*son 14

如果您想在模型中获取根URL,我所做的就是调用ENV变量.

如果您还没有,请继续在您的应用程序的根目录中创建.env,并在开发中设置为:

ROOT_URL=http://localhost
Run Code Online (Sandbox Code Playgroud)

在您的生产环境中设置:

ROOT_URL=https://mydomain.com
Run Code Online (Sandbox Code Playgroud)

当然这是硬编码的,所以陷阱是你需要记住在更改域时更改这一点,并且每个环境的文件必须不同.

并且确保这也存在于您的gitignore中,因为其他敏感数据将存储在此处.

在您的模型中,您可以通过以下方式调用:ENV ['ROOT_URL']


Dan*_*sky 3

您可以使用环境变量:

在环境中

ROOT_URL=http://myapp.com
Run Code Online (Sandbox Code Playgroud)

应用内

ENV['ROOT_URL']
Run Code Online (Sandbox Code Playgroud)