【发布时间】:2012-11-27 06:02:06
【问题描述】:
我正在使用 Rails 中的一个 Web 应用程序,其行为与 CMS 非常相似:有些文章具有包含指向其他文章(或其他对象类)的链接的文本属性。我目前将属性存储为 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作为内容编辑器,但是如果有更明显的优势我会考虑其他的。
【问题讨论】:
-
我使用您的第一个解决方案做了类似的事情。它类似于 wordpress 等系统中的简码操作方式。然后我构建了一个助手,它可以解析任何可能包含短代码的文本并在模型上调用相关方法。例如:
parse_article_desc(article)然后我们可以在模型上执行方法,而不仅仅是文本。希望对您有所帮助。
标签: ruby-on-rails ruby-on-rails-3 content-management-system ckeditor hyperlink