1

: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
4

1 に答える 1

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 %>
于 2013-03-19T06:54:22.413 に答える