在Rails 3中的“Post”文本字段中放置一个超链接

时间:2010-11-18 22:15:51

标签: ruby-on-rails ruby-on-rails-3

Rails Newb在这里问他的第一个问题......

我正在构建一个个人博客风格的网站,该网站使用通用的“Post”脚手架来向网站添加内容。这些字段分别为标题:字符串正文:文字:tag_list Acts-as-taggable 对帖子进行排序并将其放在正确的页面上。

当我创建一个新帖子并在:body 中输入文字时,我无法识别除纯文本以外的任何内容。我试图让它接受文本本身的内嵌html标签,rails方法(即 link_to image_tag )。当我输入这个时,我意识到我正在寻找的是大多数博客文本编辑器的基本功能。有没有简单的方法呢?

以下是我的帖子型号

class Post < ActiveRecord::Base
  has_many :tags
  acts_as_taggable_on :tags
  attr_accessible :tag_list, :tags, :title, :body, :post, :comments
  validates :title, :presence => true, :length   => { :maximum => 30 }
  validates :body, :presence => true
  default_scope :order => 'posts.created_at DESC'
  named_scope :by_join_date, :order => "created_at DESC"

以下是我的帖子帮助

module PostsHelper
    include ActsAsTaggableOn::TagsHelper
    include TagsHelper

帖子控制器帖子视图都是基本符号,与脚手架代码保持不变。

提前感谢您的帮助!

〜丹

1 个答案:

答案 0 :(得分:4)

(根据以下评论为Rails 3编辑)

如果我理解了这个问题,您希望用户能够在其帖子内容中输入HTML。

首先,如果您手动输入HTML标记,但它们显示为纯文本(例如&lt; img src =“...”/&gt;而不是实际图像),则必须进入视图并添加在邮政机构面前“生”。

<%= @post.body %>

应该是

<%= raw @post.body %>
默认情况下,

Rails 3可以防止用户尝试将HTML插入您网站的不需要的部分。例如没有它,如果我对你的帖子发表评论,我可以插入一些恶意的&lt; javascript&gt;标签。但如果你是唯一一个发帖的人,那显然不是问题,所以显示“原始”html内容是安全的。

至于HTML本身,你可以想象你的文本字段解释rails代码(比如link_to或image_tag助手)但那是蝙蝠国家,除非你真的,真的很确定你在做什么我不会去那里。 (即使你确实知道我也不推荐它。)

您可以查看一种更简单的标记语言,例如RedCloth,非常容易实现但也有限,或者您可以像CKEditorWYMEditor

StackOverflow使用WMD-editor,它是简单标记引擎和WYSIWYG文本字段的组合。

我通常使用CKE,因为它具有非常完整的功能集,并且易于用于习惯MSWord编辑的人。