rails get app root/base url

2019-03-17 13:59发布

In my app I have a few APIs that under api domain. Now in one of the API I want to generate a url that pointing to the main domain, say

test.com/blabla...

I tried to use url_for but seems the default root_url or request.host is in api domain. Url_for will make it to be

api.test.com/blabla..

while I want it to be

test.com/blabla...

Url_for can take a parameter

host: ...

to set it to be test.com/, the question is how can I get the root/base url (test.com) for host? root_url or request.host are all api.test.com.

Any ideas? Thanks.

4条回答
Lonely孤独者°
2楼-- · 2019-03-17 14:14

Just so that it's useful to someone else , i came across this today

request.base_url

gives the full path in local as well as on live .

request.domain

gives just the domain name so it sometimes kinda breaks the link while redirecting

查看更多
Explosion°爆炸
3楼-- · 2019-03-17 14:20

According to this you can do request.domain

查看更多
做自己的国王
4楼-- · 2019-03-17 14:25

Simplest alternative method:

include in you're class

include Rails.application.routes.url_helpers

create function or just use root_url to get app root/base url:

  def add_host_prefix(url)
    URI.join(root_url, url).to_s
  end

finally: add

Rails.application.routes.default_url_options[:host] = 'localhost:3000'

in:

Your_project_root_deir/config/environments/development.rb

although helpers can be accessible only in views but this is working solution.

查看更多
在下西门庆
5楼-- · 2019-03-17 14:32

request.domain fails on CF it given domain url not base url

查看更多
登录 后发表回答