如何在视图中对某些数据进行排序?

时间:2011-11-16 13:26:07

标签: ruby-on-rails view sql-order-by

我正在使用Ruby 1.8.2和Rails 2.3.11。

<% @answered_respondents = Inquiry.find(:all, :conditions => ["question_id = (?) AND is_answered = 1 AND is_denied = 0", q.id]) %>


<% @answered_respondents.each_with_index do |r, i| %>
    <% @nene = Respondent.find(:all, :conditions => ["id = (?)", r.respondent_id ]) %>
      <% @nene.each do |zz| %>
         <span class="statis_answered_resp"><%= zz.email %></span>
      <% end %>
<% end %>

我想做什么:我想通过电子邮件排序我的用户(zz.email)。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

在模型中创建默认范围

Rails2:   default_scope :order => 'email ASC' 
Rails3:   default_scope order('email ASC') 

默认值就是所有视图的默认值。

对于其他排序,您还可以创建其他范围,例如

Rails2:   named_scope :special :order => 'email ASC' 
Rails3:   scope :special order('email ASC') 

要使用therm,只需说ModelName.all.special即可 将ruby升级到1.8.7也是一个好主意。

1.9.2也运作良好,也会很棒 虽然不依赖,但它通常与Rails3一起使用