我有一个模型帖子:mark,:text
我的帖子有一个列表
<% @posts.each do |p| %>
# todo
<% if p.mark? %>
<%= p.mark %> <%= sweet_thing(p.text) %>
<% else %>
<%= sweet_thing(p.text) %>
<% end %>
<% end %>
我需要显示p.mark名称而不是#todo,其中p.mark第一次出现。 最后的txt示例:
奥迪
奥迪,文字文字文字。
奥迪,文字文字文字。
奥迪,文字文字文字。
福特
福特,文本文本文本。
福特,文本文本文本。
福特,文本文本文本。
福特,文本文本文本。
更新
我的txt在控制器中呈现
def txt_receiver
@posts = Post.where("created_at >= ?", 7.days.ago.utc).find(:all, order: "mark, LOWER(post)")
render "txt_for_newspapper", formats: ["text"]
end
答案 0 :(得分:2)
一个明显的解决方案是跟踪看到的标记。
<% seen_marks = {} %>
<% @posts.each do |p| %>
<% unless seen_marks[p.mark] %>
<%= p.mark %>
<% seen_marks[p.mark] = true %>
<% end %>
# rest of your code
<% end %>
更好的解决方案(我认为)涉及按标记对帖子进行分组,然后以组的形式输出。但我不确定它是否符合你关于缺失标记的逻辑。
<% @posts.group_by(&:mark).each do |mark, posts| %>
<%= mark %>
<% posts.each do |p| %>
<%= p.mark if mark %> <%= sweet_thing(p.text) %>
<% end %>
<% end %>