如何使用Rails路径助手更改域名?

4
因此,Rails 提供这些路径辅助方法,例如,在视图文件中,我可以使用:
<%= link_to "edit", edit_admin_article_path(article) %>

这将适用于开发环境(本地主机)或生产环境。对于开发环境,它会生成URL。
http://localhost:3000/admin/articles/1018/edit

生产环境下,它将生成:
http://www.mydomain.com/admin/articles/1018/edit

我的问题是:在开发环境中如何强制使用生产链接的URL?我能否通过哈希传递一个域值来调用edit_admin_article_path()方法?
谢谢。
2个回答

8

你可能需要使用url helper,它可以将域名作为选项并生成完全限定域名。

edit_admin_article_url(article, domain: "production.tld")

它还会获取您在路由中添加的任何约束条件。

提供一些文档链接以展示可以使用哪些选项会很好。我已经找到了实现代码,但它并没有为我提供太多启发。https://github.com/rails/rails/blob/2f2c6247f5931982879bebeddf67b30f487e0811/actionpack/lib/action_dispatch/routing/route_set.rb#L134 - Rune Schjellerup Philosof
显然它使用与http://apidock.com/rails/ActionDispatch/Routing/UrlFor/url_for相同的选项。 - Rune Schjellerup Philosof

-3

编辑

对于新版本的Rails,请使用

edit_admin_article_url(article, domain: "example.com")

原始答案(Rails 3)

尝试

<%= link_to "edit", "http://www.example.com" + edit_admin_article_path(article) %>

当然,你可以将 `http://www.example.com` 的部分重构为辅助方法,这样如果/当你想要更改它时,就不必在每个地方都跟踪它。
或者,你可以创建一个 `absolute_link_to` 方法,通过包装 `link_to` 方法来实现你想要的效果。

对我来说没有用(我认为它会改善MitM漏洞,而且在Rails5中有任何安全功能可以避免这种可能的安全泄漏) - Stef Hej

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接