【发布时间】:2014-04-25 11:06:55
【问题描述】:
如何遍历一个集合并在 ERB 的一行中输出一个属性?
我尝试了以下方法,但输出的是整个对象:
<%= Post.all.each {|p| (content_tag :div, p.title)} %>
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 erb
如何遍历一个集合并在 ERB 的一行中输出一个属性?
我尝试了以下方法,但输出的是整个对象:
<%= Post.all.each {|p| (content_tag :div, p.title)} %>
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 erb
正如@nmeylan 指出的那样,在视图中调用 Post.all 并不是一个好习惯。
我会使用@posts 作为下面的示例。你可以试试:
<%= @posts.map { |p| content_tag :div, h(p.title) }.join.html_safe %>
由于 rails 4 默认转义 HTML,您必须调用 html_safe 或 raw。但似乎 p.title 是用户输入,所以它必须被转义。
【讨论】:
首先,您在视图中调用 ActiveRecord 方法 (Post.all),这是一种不好的做法,请在控制器中调用它。
然后,要回答您的问题,我会使用content_tag_for method 或div_for
【讨论】: