Rails 4 - 排序范围
Rails 4 - ordering scopes
我正在尝试在 Rails 4.
中制作一个应用程序
我的资格模型中有两个范围:
scope :completed, ->{ where(pending: !true) }
scope :pending, -> { where(pending: true) }
我试图在我看来列出它们(最新的在前)。
我有这个视图文件:
<% Qualification.pending.sort_by.year_earned.asc.each do |qualification| %>
<div class="row">
<div class="col-md-12">
<div class="profilequalifications">
<%= qualification.current_study %>
</div>
</div>
</div>
<% end %>
<% Qualification.completed.sort_by(&:year_earned).each do |qualification| %>
<div class="row">
<div class="col-md-12">
<div class="profilequalifications">
<%= qualification.completed_award %>
</div>
</div>
</div>
<% end %>
第二个索引有效 - 但顺序错误。
第一个索引 - 我已经尝试了表达式的一百万个变体,但找不到一个不会抛出错误的变体。
我已经尝试了上面的每一个和下面的(每个都是我在这个网站上找到的例子):
<% Qualification.pending.sort_by(&:year_earned).reverse_order.each do |qualification| %>
<% Qualification.pending.sort_by(&:year_earned.reverse).each do |qualification| %>
<% Qualification.pending.sort_by('&:year_earned ASC').each do |qualification| %>
<% Qualification.pending.sort_by('year_earned ASC').each do |qualification| %>
而不是全部列出 - 有谁知道如何按升序排列?
我想你想要Qualification.pending.order(year_earned: :asc).each do |qualification|
有关详细信息,请参阅此内容:http://apidock.com/rails/ActiveRecord/QueryMethods/order
我会将订单包含在您的范围内。
scope :completed, ->{ where(pending: !true).order('year_earned DESC') }
scope :pending, -> { where(pending: true).order('year_earned DESC')}
在您看来,只要删除 .sort_by 就可以了。
<% Qualification.pending.each do |qualification| %>
<div class="row">
<div class="col-md-12">
<div class="profilequalifications">
<%= qualification.current_study %>
</div>
</div>
</div>
<% end %>
<% Qualification.completed.each do |qualification| %>
<div class="row">
<div class="col-md-12">
<div class="profilequalifications">
<%= qualification.completed_award %>
</div>
</div>
</div>
<% end %>
我正在尝试在 Rails 4.
中制作一个应用程序我的资格模型中有两个范围:
scope :completed, ->{ where(pending: !true) }
scope :pending, -> { where(pending: true) }
我试图在我看来列出它们(最新的在前)。
我有这个视图文件:
<% Qualification.pending.sort_by.year_earned.asc.each do |qualification| %>
<div class="row">
<div class="col-md-12">
<div class="profilequalifications">
<%= qualification.current_study %>
</div>
</div>
</div>
<% end %>
<% Qualification.completed.sort_by(&:year_earned).each do |qualification| %>
<div class="row">
<div class="col-md-12">
<div class="profilequalifications">
<%= qualification.completed_award %>
</div>
</div>
</div>
<% end %>
第二个索引有效 - 但顺序错误。
第一个索引 - 我已经尝试了表达式的一百万个变体,但找不到一个不会抛出错误的变体。
我已经尝试了上面的每一个和下面的(每个都是我在这个网站上找到的例子):
<% Qualification.pending.sort_by(&:year_earned).reverse_order.each do |qualification| %>
<% Qualification.pending.sort_by(&:year_earned.reverse).each do |qualification| %>
<% Qualification.pending.sort_by('&:year_earned ASC').each do |qualification| %>
<% Qualification.pending.sort_by('year_earned ASC').each do |qualification| %>
而不是全部列出 - 有谁知道如何按升序排列?
我想你想要Qualification.pending.order(year_earned: :asc).each do |qualification|
有关详细信息,请参阅此内容:http://apidock.com/rails/ActiveRecord/QueryMethods/order
我会将订单包含在您的范围内。
scope :completed, ->{ where(pending: !true).order('year_earned DESC') }
scope :pending, -> { where(pending: true).order('year_earned DESC')}
在您看来,只要删除 .sort_by 就可以了。
<% Qualification.pending.each do |qualification| %>
<div class="row">
<div class="col-md-12">
<div class="profilequalifications">
<%= qualification.current_study %>
</div>
</div>
</div>
<% end %>
<% Qualification.completed.each do |qualification| %>
<div class="row">
<div class="col-md-12">
<div class="profilequalifications">
<%= qualification.completed_award %>
</div>
</div>
</div>
<% end %>