将文本包装到字边界处的行中

时间:2010-02-22 16:03:53

标签: ruby-on-rails ruby string

1)我想通过单词自动换行文本,这样每行不超过56个字符。 有没有这样做的方法,还是我需要自己滚动?

@comment_text = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."

我的观点:

<%= @comment_text.cool_string_function( 56 ) %>

会呈现:

Lorem ipsum dolor sit amet, consectetur adipisicing
elit, sed do eiusmod tempor incididunt ut labore et 
dolore magna aliqua.

2)我想将文本缩进4个空格,以便:

<%= @comment_text.cool_string_function( {:width => 56, :indent => 4} ) %>

会呈现:

    Lorem ipsum dolor sit amet, consectetur adipisicing
    elit, sed do eiusmod tempor incididunt ut labore et 
    dolore magna aliqua.

2 个答案:

答案 0 :(得分:19)

我相信您正在寻找的功能是word_wrap。这样的事情应该有效:

<%= word_wrap @comment_text, :line_width => 56 %>

您可以将其与gsub结合使用以获得所需的缩进:

<%= word_wrap(@comment_text, :line_width => 52).gsub("\n", "\n    ") %>

但你应该把它转移到帮助方法中以保持你的视图清洁。

答案 1 :(得分:9)

也许word_wrap助手可以帮助你。

要缩进文字,您可以用换行符+4个空格替换\n(换行符)。