ERB中的单行迭代和输出

时间:2014-04-25 11:06:56

标签: ruby-on-rails ruby-on-rails-4 erb

如何迭代集合并在ERB中的一行中输出属性?

我尝试过以下操作,但输出整个对象:

<%= Post.all.each {|p| (content_tag :div, p.title)} %>

2 个答案:

答案 0 :(得分:1)

正如@nmeylan指出的那样,调用Post.all并不是一个好习惯。

我会使用@posts作为例子。你可以尝试:

<%= @posts.map { |p| content_tag :div, h(p.title) }.join.html_safe %>

由于rails 4默认情况下会转义HTML,因此您必须致电html_saferaw。但似乎p.title是用户输入,因此必须进行转义。

答案 1 :(得分:0)

首先,您在视图中调用ActiveRecord方法(Post.all),这是一个不好的做法,在控制器中调用它。

然后,为了回答您的问题,我会使用content_tag_for methoddiv_for