我在rails 3中使用会话时遇到了一些麻烦。我将首先详细介绍一些我的工作环境。
我在heroku上托管了一个应用程序,假设您的网址为 http://myapp.herokuapp.com
我有一个 CNAME 指向heroku的域名,让我们说它是 http://www.myapp.com
当我从我的应用程序向客户端发送电子邮件时,它包含应用程序限制区域的URL,然后执行的方式是:
http://www.myapp.com - >电子邮件 - > http://www.myapp.com/secret
但是如何将用户重定向到 http://www.myapp.com/log_in
的秘密区域问题在于:Rails会保存应用程序的实际URL,在本例中为 http://myapp.herokuapp.com ,登录后会将用户重定向到 {{3} } 的!我不想要它,希望它继续在 http://myapp.herokuapp.com/secret领域。
有没有办法做到这一点?
答案 0 :(得分:1)
试试这个:
redirect_to secret_path( host: 'myapp.com' )
或
redirect_to url_for( action: 'my_action', host: SOME_DEFAULT_HOST )
修改
我不确定我是否理解你的问题 - 你的意思是保存数据库中的URI吗?
恕我直言,保存硬编码的网址可能会变得很麻烦。如果可能的话,尝试保存解构的URI部分而不是完整的字符串路径,这样您可以稍后将args发送到url_for
或任何路径助手(并根据需要调整它,或者立即更新整个表)例如更改主机)。
如果没有,您可以随时使用您选择的任何lib解析保存的URI,然后在重定向之前调整它