2014-03-12 50 views
0

阿維Tzurel寫了這個幫手更好simple_format:的Rails 3傳遞選項語法

def simple_format_no_tags(text, html_options = {}, options = {}) 
    text = '' if text.nil? 
    text = smart_truncate(text, options[:truncate]) if options[:truncate].present? 
    text = sanitize(text) unless options[:sanitize] == false 
    text = text.to_str 
    text.gsub!(/\r\n?/, "\n")     # \r\n and \r -> \n 
    text.gsub!(/([^\n]\n)(?=[^\n])/, '\1<br />') # 1 newline -> br 
    text.html_safe 
    end 

在我看來,我有這樣的:

<%= simple_format_no_tags(article.text) %> 

我新的編程和軌道 - 什麼是傳遞選項以截斷144個字符的語法?

回答

1
simple_format_no_tags(article.text,{},{:truncate => 144}) 

simple_format_no_tags方法着眼於options參數truncate關鍵。由於選項是第三個參數,因此如果您沒有任何html選項可以通過,則必須傳遞空哈希或零。如果您沒有任何html選項可以通過。

找到此實現here。見這是否會爲你工作

def smart_truncate(text, char_limit) 
    size = 0 
    text.split.reject do |token| 
    size += (token.size + 1) 
    size > char_limit 
    end.join(" ") + (text.size >= char_limit ? " ..." : "") 
end 
+0

我試過了,但得到未定義的方法'smart_truncate」 – user3213561

+0

我以爲你也複製'無論你複製smart_truncate''simple_format_no_tags' – usha

+0

很大。這樣可行!我似乎無法找到如何添加「閱讀更多」,並與截斷結束內聯。如果我打開一個新的erb標籤link_to閱讀更多它去下一行。 – user3213561