我在 Rails 中的一个 Web 应用程序中工作,它的行为很像 CMS:有文章,它们有一个 text 属性,其中包含指向其他文章(或其他对象类)的链接。我目前将属性存储为 HTML。
有没有什么好的方法可以以相对容易更改的方式对这些链接进行建模,并包含对对象 ID 的引用,而不是绝对 url?
我在想的解决方案之一是使用某种特殊标记,例如:
[link_to "Text for the link", Article:12]
其中 12 是它链接到的文章的 ID。呈现文本时将解析此标记。
这样做的缺点是我必须侵入 TinyMCE(我想用来编辑 HTML 的编辑器),以便它可以通过访问数据库并自动分配对象类型和 ID 来插入指向其他对象的链接(编辑文本的人不知道 ID)。
有什么简单的解决方案吗?
或者我应该坚持使用绝对网址(除了维护问题之外,这在开发中很烦人,因为它们总是指向生产,这让我感到困惑)?
此外,是否有人在其他语言(php、Wordpress、其他 CMS 等)中有类似的示例可以很好地解决这个问题?我在想,这在 CMS 中非常重要,如果一个好的系统可以处理所有这些链接,可以减少很多工时。
编辑:
我正在考虑的另一种可能的解决方案是让人们直接在代码中复制文章的链接,但它应该在提交时生成正确的关联 id 并使其在 url 结构发生变化时,链接是始终保持最新。如果您尝试过,我想听听您对这种方法的意见和经验。
这种方法的挑战是用 Rails 解析链接并发现它指向一个文章,并且该文章具有 id ##
。然后我必须插入一个短代码,在解析和呈现时,它总是会转换为该文章的实际链接。
我找到了一种可以使之可行的方法:
Rails.application.routes.recognize_path
但可能有一些我现在看不到的警告......
编辑号 2
我还想说明我选择CKEditor作为内容编辑器,但是如果有更明显的优势我会考虑其他的。