2010-11-18 56 views
1

的Rails福利局这里问他的第一个问题....把一个超链接的“邮报”的文本字段中的Rails 3

我建立一个个人博客式的网站,使用一个通用的“邮报”脚手架添加内容到网站。字段为标题:字符串,正文:文本:tag_list分别为可作为标记的行为对帖子进行排序并将它们放在正确的页面上。

当我创建一个新帖子并在:主体中输入文本时,我无法识别除纯文本以外的任何内容。我试图让它在文本本身中接受内嵌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 

帖子控制器文章浏览距离不变,所有basicallu脚手架代码。

在此先感谢您的帮助!

〜丹

+0

你在寻找一个富文本编辑器或者在文章的show动作中显示HTML内容的方法吗? – Brian 2010-11-18 22:53:14

回答

4

(编辑为Rails 3按下面的评论)

如果我理解这个问题,你希望用户能够在他们的帖子内容进入HTML。

首先,如果您手动输入HTML标记,但它们显示为纯文本(例如< img src =“...”/ >而不是实际图像),则必须进入视图并添加“原始“之前的身体。

<%= @post.body %> 

应该

<%= raw @post.body %> 

Rails 3的默认保护您免受那些试图插入HTML到您的网站中不需要的部分用户。例如没有它,如果我在你的文章发表评论,我可以插入一些恶意<javascript>标签。但是,如果你是唯一一个发布帖子,那显然不是问题,所以显示“原始”html内容是安全的。

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

你可以看看像RedCloth一个简单的标记语言,很容易实现,但也比较有限,或者你可以全力以赴所见即所得像CKEditorWYMEditor

StackOverflow的使用WMD-editor,一个简单的组合标记引擎和所见即所得的文本字段。

我通常会使用CKE,因为它具有非常完整的功能集,对于习惯于类似MSWord的编辑器的用户很容易使用。

+0

其实这应该是'<%= @ post.body.html_safe%>',因为这是Rails3。 – 2010-11-18 23:27:24

+0

啊我应该注意到了。修正了,谢谢! – 2010-11-19 00:24:28

+0

添加“html_safe”效果很好。它回避了这个问题,我是否应该使用“博客引擎”,而不是试图用简单的Post模型/控制器+行为作为标签 - 对+ acts_as_commentable来重现基本的博客功能?我想在铁轨上变得更好,但我不想让一个不安全的网站。有什么建议么? – thoughtpunch 2010-11-19 15:35:51

相关问题