2010-11-18 15 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