从 YML 文件设置 rails 重定向
Posted
技术标签:
【中文标题】从 YML 文件设置 rails 重定向【英文标题】:Set rails redirections from YML file 【发布时间】:2021-11-14 02:32:46 【问题描述】:我目前有一个 YML 文件,其中包含一堆重定向 URL,遵循简单的语法
old_url: new_url
.
当我在我的应用程序上加载这个 YML 文件时,我最终得到了一个键和值的散列。
目前,我没有使用此 YML,并且我的所有重定向都手动添加到重定向文件中,这意味着我有一个非常大的文件,其中手动添加了 150 多个重定向,遵循以下语法:
get 'old_url', to: redirect('new_url', status: 301)
我想做的是删除所有这些行,并改用我在 YML 文件中的“键/值”对。 最好的方法是什么?
我认为这就像在重定向文件中迭代我的哈希一样简单,但它似乎不起作用,我不确定这是一种真正干净的方法
非常感谢
【问题讨论】:
这就像在重定向文件中迭代哈希一样简单。贴一些代码。你都尝试了些什么。应该发生什么,而不是发生了什么。 经过一番挖掘,它可以工作,但实际上只是规范没有通过。我认为在这种情况下,我将需要找到另一种编码方式,否则我将无法保持测试通过 【参考方案1】:以下内容应该可以在您的config/routes.rb
中使用:
redirects = YAML.load_file(Rails.root.join('path/to/redirects.yaml'))
redirects.each do |old, new|
get old, to: redirect(new, status: 301)
end
请注意,您需要更改路径和文件名以匹配您的 YAML 文件的路径和文件名。
【讨论】:
在这里提出一个很好的观点。虽然路由有一个非常特定的 DSL,但它只是一个常规 Ruby 文件,您可以在其中使用常规 Ruby 语法。 谢谢,不知道为什么它不起作用,但可能是一些语法问题!以上是关于从 YML 文件设置 rails 重定向的主要内容,如果未能解决你的问题,请参考以下文章
乘客(Ruby on Rails)中的301重定向从根域到www子域?