2017-03-04 44 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,它应该覆盖在视图中呈现的值。