<
我的问题是——我如何在这个视图中对标签应用顺序?标签中的"default_scope"。
<视图/strong>
<% @skills.each do |s| %>
<ul>
<% s.active_positions.collect{|p| p.tags}.flatten.uniq.each do |tag| %>
<li><%= link_to tag.name, s %></li>
<% end %>
</ul>
<% end %>
控制器
@skills = Skill.includes(:active_positions => :tags)
class Skill
has_many :tags
has_many :positions
has_many :active_positions, :class_name => "Position", :conditions => {:hidden => false}
end
class Position
belongs_to :skill
has_and_belongs_to_many :tags
end
class Tag
belongs_to :skill
has_and_belongs_to_many :positions
default_scope :order => "sequence ASC"
end
<
解决方案/strong>
in the view…
<% s.active_positions.collect{|p| p.tags}.flatten.uniq.sort_by{|tag|tag.sequence}.each do |tag| %>
可以使用sort对数组进行排序!和/或sort_by !你可以像这样传递一个block:
@something.to_a.sort_by!{ |entry| entry.attribute }.each ...
在您的例子中,应该是这样的:
<% s.active_positions.collect{|p| p.tags}.flatten.uniq.sort_by{ |tag| tag.name }.each do |tag| %>