Rails.Если остальное и петли - PullRequest
0 голосов
/ 25 мая 2011

Я хочу сделать следующее частично:

-if (session[:sort] == "up")
  - event.days.sort_by{|t| - t.created_at.to_i}.each do |day|
    = day.title
    = day.etc
-else
  - event.days.sort_by{|t| - t.created_at.to_i}.reverse.each do |day|
    = day.title
    = day.etc

Но я не хочу повторять

= day.title
= day.etc

Я пытался:

-if (session[:sort] == "up")
  - event.days.sort_by{|t| - t.created_at.to_i}.each do |day|
-else
  - event.days.sort_by{|t| - t.created_at.to_i}.reverse.each do |day|
= day.title
= day.etc

Но это не работает.Может быть, я могу сделать это как-то с троичным оператором.

Ответы [ 2 ]

2 голосов
/ 25 мая 2011

Сортировка событий, только обратное их, если выполняется необходимое условие, затем распечатка их.

- sorted_events = event.days.sort_by{|t| - t.created_at.to_i}
- sorted_events = sorted_events.reverse  unless session[:sort] == "up"
- sorted_events.each do |day|
  = day.title
  = day.etc

В идеале вы должны выполнить эту сортировку в контроллере, а затем просто сделать отображение в виде.

2 голосов
/ 25 мая 2011

Желательно, чтобы вы выполнили логику сортировки в контроллере и сохранили вывод в переменной экземпляра. В представлении просто сделайте отображение как:

<% @results.each do |result| %>
<%= result.title %>
<%= result.etc %>
<% end %>
...