如何在Rails中以相对方式使用link_to?

时间:2012-08-30 13:22:17

标签: ruby-on-rails erb

我正在使用omniauth-facebook gem来做一些Facebook登录的东西。该调用以这样的方式工作:当调用/ auth / facebook时,它执行身份验证过程。当我手动输入URL时,所有这些都可以正常工作:http://localhost:3000/auth/facebook

但是,当我仅使用我的代码时,我的域名设置为我的应用程序具有以下URL:

http://railsapps.mydomain.com/app1  
http://railsapps.mydomain.com/app2  
http://railsapps.mydomain.com/app3

现在在我的索引页面中,我有一个用我的.html.erb文件写的链接:

<%= link_to "Sign in with Facebook", "/auth/facebook", id: "sign_in" %>

当我在本地运行并点击链接时,它正确地转到localhost:3000 / auth / facebook,世界上一切都很好。但是,当我使用相同的代码上线并点击此链接时,它会转到:http://railsapps.mydomain.com/auth/facebook(这当然不起作用,因为它应该转到railsapps.mydomain.com/app1/auth/facebook

非常感谢在这方面提供的任何帮助。

谢谢。

2 个答案:

答案 0 :(得分:1)

你应该能够使用它:

<%= link_to "Sign in with Facebook", root_url + "auth/facebook", id: "sign_in" %>

或者如果不起作用请尝试request.host:

<%= link_to "Sign in with Facebook", "http://#{request.host}/auth/facebook", id: "sign_in" %>

答案 1 :(得分:0)

您应该在default_url_options中修改ApplicationController

def default_url_options
  if Rails.env.production?
    {:host => "railsapps.mydomain.com/app1"}
  else  
    {}
  end
end