2011-09-09 68 views
2

在Ruby中可見字符計數驗證(作爲跟進這個問題:In Jquery AND Rails, how to get visible character count of a string?如何寫on Rails的

比方說,你有嵌入式鏈接和標籤,像這樣的字符串:

This string has <a href="http://www.google.com">some links</a> inside it. 

然後可見的字符串給用戶是:

This string has some links inside it. 

完整的字符串有73個字符和可見只是37個字符。

比方說,我現在想寫一個檢查字符串的長度可見一軌驗證(自定義驗證)。即:

validate :string_visible_length 

def string_visible_length 
     #some code that verifies the character length of a field named :field_name 
end 

任何想法如何做到這一點?我需要剝離html標籤,然後選中字符長度..

回答

4

我想你可以在你的驗證使用strip links方法。

讓你的模型文件中提供的助手:

include ActionView::Helpers 

這裏的驗證:

validate :string_visible_length 

private 

    def string_visible_length 
    visible_string = strip_links(self.column_name) # where column_name is the field you need validated 
    errors.add(:base, 'Visible string is too long') if visible_string.length > 20 # 20 is whatever length you need 
    end 
+0

與您的代碼錯誤 「未定義的方法'strip_links'爲」

asdfasdfasdf

「:字符串」 來向上。看着api,你需要把字符串放在strip_links(「this string」)中。但是,然後切換到strip_links(self.column_name).length ...會導致錯誤「未定義的方法'strip_links'爲#」想法? – jay

+0

哦,是的,呃,這是一個幫手的方法,而不是一個AR的電話。讓我重寫一下。 – Preacher

+0

嗯..我認爲一行必須添加到模型沿線的「包括ActionController :: Base :: Helpers」模型(雖然我不認爲這條線的作品)。想法? – jay