使用辅助方法和 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>
浏览器输出
建议您不要 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>
进行渲染。
很抱歉这个菜鸟问题,但我似乎无法弄清楚如何使用 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>
浏览器输出
建议您不要 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>
进行渲染。