【问题标题】:word wrapping in rails 4 app not working at allRails 4应用程序中的自动换行根本不起作用
【发布时间】:2023-03-06 19:46:01
【问题描述】:

我正在尝试将其包装在我的视图目录中,并且是技能的一部分。每个都做 |skill| :

<%= 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"

【问题讨论】:

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


    【解决方案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 工作。再一次,它看起来很乱,但它有效。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-12-20
        • 1970-01-01
        • 2013-05-09
        • 2014-06-14
        • 2023-01-31
        • 2014-12-17
        • 2016-03-26
        • 2018-02-10
        • 2014-02-15
        相关资源
        最近更新 更多