我遇到了以下问题。我想明确地告诉rails它运行的端口,以便_url帮助器将使用该端口而不是自动发现的端口。
潜在的问题是,我已经瘦服务我的rails app和apache服务静态内容。只要在端口80(apache)上访问网站,这种方法就可以正常工作,但在瘦端口上运行时却无法访问。 (这是自动发现的端口。)
答案 0 :(得分:0)
由于Ruby on Rails使用自己的服务器,因此需要将访问您网站的用户(以及随后的Ruby on Rails应用程序)重定向到相应的端口。
要更改Ruby on Rails服务器的端口,您应该使用-p选项启动服务器:
ruby s -p <port-number>
答案 1 :(得分:0)
Rails应该创建相对链接,不包括完全限定的域名,请参阅示例here,我引用:
link_to "Profile", profile_path(@profile)
# => <a href="/profiles/1">Profile</a>;
另一方面,* _url快捷方式正在使用完整路径,当你在反向代理(在你的情况下是apache)时,这很糟糕。
您是否尝试仅使用* _path进行链接,而* _url进行重定向,因为在重定向的情况下,apache应该重写url以匹配其端口(假设您在Apache使用ProxyPass和ProxyPassReverse指令)水平)?
如果使用url_for,可以通过将:only_path设置为true来强制它为相对。
如果您的apache配置不是基于ProxyPass,请复制/粘贴有趣的部分,以便我可以解决这个问题吗?
提前致谢。