在rails 4应用程序中包装完全没有工作

时间:2014-04-26 19:55:02

标签: html ruby-on-rails-4 newline word-wrap

我试图将这个包含在我的视图目录中,并且是技能的一部分。 :

<%= skill.description %>

我读了http://api.rubyonrails.org word_wrap部分并尝试了以下所有内容。

<%= word_wrap(skill.description.to_s, line_width: 8) %> #because description is stored as text in database

<%= word_wrap(skill.description, line_width: 8) %>

上面的内容根本不起作用。我绑定了它并得到了这个错误:

ArgumentError: wrong number of arguments (0 for 1..2)

我也尝试将此添加到我的application_controller:

def wrap(s, width=78)
s.gsub(/(.{1,#{width}})(\s+|\Z)/, "\\1\n")
end

并在我的视图中包装如下:

<%= wrap(skill.description.to_s, 8) %>

我甚至尝试将wrap方法放在我的users_controller中,并作为最后一次尝试甚至在我的视图文件中。有什么建议吗?

我注意到它在我的控制台中有效:

wrap(skill.description, 8)
=> "code\nstuff,\nlearn\nprogramming\nin many\ndifferent\nlanguages\nright in\nyour\nbrowser\nfor free\n"

2 个答案:

答案 0 :(得分:1)

我想出了一个hacky方法,如果有可用的话,请提供更好的解决方案。

(这应该可以进入模型,但它不起作用所以我把它放在视图中,直到有人可以帮助我)

def wrap(s, width=78)
  s.gsub(/(.{1,#{width}})(\s+|\Z)/, "\\1<br>").html_safe
end

以下是观点:

<%= wrap(skill.description.to_s, 65) %>

注意在正则表达式中我将\ n更改为一个有点像html页面中的换行符,然后通过添加.html_safe使html工作。再次看起来很混乱,但它确实有效。

答案 1 :(得分:0)

word_wrap添加\ n。使用简单格式将\ n替换为html换行符:

<%= simple_format(word_wrap(skill.description, line_width: 8)) %>