首先让我说我喜欢 Rails 6 在 ActionText 中提供的东西。不幸的是,当我为类似帖子模型的属性声明它时:
class Post < ApplicationRecord
has_rich_text :body
end
我无法再访问正文的文本了。它成为一个 ActionText 实例。我完全理解这是此功能的工作原理,但有时我需要将正文的纯文本传递给其他外部方法。在我的例子中,我在我的元描述标签中使用了一个叫做元标签的 gem。这样做会导致此错误:
Expected a string or an object that implements #to_str
这是因为在纯文本列之前的内容变成了 AT 实例:
=> #<ActionText::RichText id: 39, name: "body", body: #<ActionText::Content "<div class=\"trix-conte...">, record_type: "Post", record_id: 161, created_at: "2019-08-17 17:34:27", updated_at: "2019-08-17 17:34:27">
看到它附带了 getter 方法,我试图做类似的事情,@post.body.body
但这实际上是
=> #<ActionText::Content "<div class=\"trix-conte...">
另请注意,我尝试在 post 模型中创建一个方法,但是一旦声明了 has_rich_text,我就不再拥有对正文文本的原始访问权限。
我不完全确定如何:
- 从body属性中提取我的原始内容将其转换为没有html的纯文本