Ruby on rails 如何在助手方法中为对象数组呈现部分模板?
我使用的是RubyonRails3.2.13,我想在助手方法中为对象数组呈现部分模板。也就是说,在我的助手文件中,我有:Ruby on rails 如何在助手方法中为对象数组呈现部分模板?,ruby-on-rails,ruby,arrays,templates,rendering,Ruby On Rails,Ruby,Arrays,Templates,Rendering,我使用的是RubyonRails3.2.13,我想在助手方法中为对象数组呈现部分模板。也就是说,在我的助手文件中,我有: def render_articles(articles) articles.each do |article| render :partial => ... end end 但是,上面的方法不返回部分模板,而是返回一个数组。如何正确渲染这些内容?您拥有的每个块都不会返回块的内容,而是返回数组本身。您需要一种机制来返回内容 方法: def render
def render_articles(articles)
articles.each do |article|
render :partial => ...
end
end
但是,上面的方法不返回部分模板,而是返回一个数组。如何正确渲染这些内容?您拥有的每个
块都不会返回块的内容,而是返回数组本身。您需要一种机制来返回内容
方法:
def render_articles(articles)
html = ""
articles.each do |article|
html += render :partial => ...
end
html.html_safe
end
另一种方法:
def render_articles(articles)
articles.inject("") { |html, article| html + render :partical =>... }.html_safe
end
通过使用您的代码,我得到了部分模板的纯文本,而该文本不会呈现为HTML代码,除非我使用HTML\u-safe
方法。但是,一般来说,使用html\u-safe
方法是否危险?@user502052您必须使用html\u-safe
。在这种情况下这并不危险。你也可以做得更简短一些:articles.map{article | render partial:…}.join(“”).html_safe
@Olivier El-Mekki-出于好奇,两个建议的解决方案(inject
和map
)之间最有效的方法是什么,但仅限于高计算量:。这在您的情况下不会有任何区别(除非生成10000个部分,然后这将不是您的更糟糕的问题:))为什么不干脆render:partial=>'…',:collection=>articles
?