开发者

Rails. If Else and Loops

I want to do the following in a partial:

-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.开发者_JAVA技巧each do |day|
    = day.title
    = day.etc

But I do not want to repeat

= day.title
= day.etc

I tried:

-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

But it doesn't work. Maybe I can do it somehow with ternary operator.


Sort the events, only reverse them if the required condition is met, then print them out.

- 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

Ideally you would do this sorting in the controller, then just do the display in the view.


It is advisable that you do the sorting logic in the controller and store the output in an instance variable. In the view just do the display thing as:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜