使用辅助方法和 Ruby 可枚举到 return html 格式化对象

Using helper method and Ruby enumerable to return html formatted objects

很抱歉这个菜鸟问题,但我似乎无法弄清楚如何使用 ruby 可枚举对象和助手来 return 格式化 HTML 对象。我想删除括号。无论如何,return 格式化对象是否具有基于对象数组的可枚举?

帮手

module PostsHelper


  def display_posts(posts)
    if posts.any?
      raw(@posts.map {|p| raw("<div class='post_text_box'>#{p.body}</div>")})
    end

  end


end

HTML.erb

<div id="post_feed">
<%=display_posts(@posts)%>

</div>

浏览器输出

picture of array of formatted html

建议您不要 join.html_safe 如前一个答案所说,在 rails 中,因为如果您的底层字符串不安全,可能会受到注入攻击。

改用safe_join。它将维护要输出的字符串的 "safeness"。

if posts.any?
  safe_join( @posts.map {|p| "<div class='post_text_box'>#{p.body}</div>".html_safe } )
end

在你的情况下,我会制作一个名为 _post.html.erb 的部分,其中包含

<div class='post_text_box'><%= post.body %></div>

并在您的 thing.html.erb 文件中

<%= render @posts %>

然后 Rails 将自动迭代 @posts 遍历 _post.html.erb 并为您加入它们。

这是 Rails's Convention over configuration 的全部内容,如果您 render klass,它首先会寻找 _klass.<format>.<builder> 进行渲染。