2
Я разбираю XML, возвращенный из API контактов Google, используя XPath в Nokogiri.Как сортировать Nokogiri NodeSet?
def getcontact
doc = Nokogiri::XML.parse(open(url))
doc.xpath('//xmlns:feed/xmlns:entry[xmlns:title[node()]]')
end
Мой контроллер:
def index
@mycontacts = getcontact.to_a.paginate(:page => params[:page], :per_page => 30)
end
мой взгляд:
<% @mycontacts.each do |c| %>
<p> Name: <%= c.xpath('xmlns:title').text %> Email: <%= c.xpath('gd:email/@address').text %></p>
<% end %>
<%= will_paginate @mycontacts %>
Я хотел бы сортировать по названию в алфавитном порядке, и мне интересно, как идти об этом. Я прочитал, что могу использовать sort_by
, но как выбрать заголовок из массива?
отличное спасибо, не могли бы вы объяснить, как это работает, пожалуйста, чтобы я мог снова использовать, возможно, в другом сценарии – Richlewis
Что такое <=>? это сравнение? – Richlewis
Ваша передача блока, где a, b - любые два объекта в массиве, и <=> - это способ, который вы хотите для любых двух объектов в массиве, который будет сравниваться, так что да, это сравнение. Поэтому для экземпляров можно сказать, что я получил массив объектов, и я хотел сортировать их по их «доходу» за вычетом их «стоимости», я бы сделал @ objects.sort! {| A, b | (a.revenue - a.cost) <=> (b.revenue - b.cost)}, который возвращает массив, отсортированный по прибыли. – rovermicrover