【问题标题】:Set rails redirections from YML file从 YML 文件设置 rails 重定向
【发布时间】: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 文件中的“键/值”对。 最好的方法是什么?

我认为这就像在重定向文件中迭代我的哈希一样简单,但它似乎不起作用,我不确定这是一种真正干净的方法

非常感谢

【问题讨论】:

  • 这就像在重定向文件中迭代哈希一样简单。贴一些代码。你都尝试了些什么。应该发生什么,而不是发生了什么。
  • 经过一番挖掘,它可以工作,但实际上只是规范没有通过。我认为在这种情况下,我将需要找到另一种编码方式,否则我将无法保持测试通过

标签: ruby-on-rails ruby routes url-routing


【解决方案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 语法。
  • 谢谢,不知道为什么它不起作用,但可能是一些语法问题!
猜你喜欢
  • 2014-12-28
  • 2016-03-25
  • 2014-01-06
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-17
相关资源
最近更新 更多