2017-03-04 64 views
0

假設用戶填寫了他的個人資料「關於」部分,並且在其中有一個非常長的「aaaaaaaaaaaaaaa ......」字,該字破壞了站點標記。現在,這個詞需要被打破。打破Rails視圖中用戶輸入的長詞

通常,有兩種方法可以做到這一點。我可以(在這裏HAML)寫一個Rails助手將做的工作,而且會導致類似

.about= break_long_words(@user.about) 
在我的意見

,或者我可以使用CSS和說:

.about { word-break: break-all; } 

然而,問題是這兩個選項都要求我在我的視圖中遍歷很多地方(我輸出用戶輸入的字段一次),並且我需要插入適當的類名稱或調用break_long_words幫助程序!我不記得所有這些地方。

不幸的是,我也不能使用body { word-break: break-all },因爲它表現得很奇怪,在奇怪的地方打破了相當短的單詞。

理想情況下,我想列出模型中的所有字段,當從視圖中調用時需要打破字詞。一個人會怎麼做這個任務?

回答

1

你可以考慮使用裝飾與Draper gem

作爲一個非常粗略的例子:

# Note, name as #{ClassName}Decorator 

class UserInputDecorator < Draper::Decorator 
    delegate_all 

    LONG_ATTRS = %i(
    attr1 
    attr2 
).freeze 

    LONG_ATTRS.each do |long_attr| 
    define_method long_attr do 
     # your code to break word here 
    end 
    end 
end 

然後,您可以調用實例decorate,它應該覆蓋在視圖中呈現的值。