Я разбираю XML из API и показываю их на одной странице, хотя я разбил их на 30 страниц.Как просмотреть каждый отдельный элемент набора узлов?
Я хочу просмотреть каждый отдельно с помощью метода link_to
, а затем обновить атрибуты, которые, в свою очередь, могут быть отправлены обратно в API в формате XML. То, что я не делаю, это сохранение модели, просто отображение. Можно ли обрабатывать возвращаемые результаты как объекты?
Это XML:
<entry>
<id>xxx</id>
<updated>xxx</updated>
<category scheme="xxx" term="xxx"/>
<title type="text">xxx</title>
<link rel="xxx" type="xxx" href="xxx"/>
<link rel="xxx"/>
<link rel="xx" type="xxx" href="xxx"/> <link rel="xx" type="axx" href="xxx"/>
<gd:email rel="xxx" address="xxx" primary="xx"/>
</entry>
Это контроллер:
def show
@contact = getcontact.find(params[:title])
end
Это getcontact
метод:
doc = Nokogiri::XML.parse(open(url))
doc.xpath('//xmlns:feed/xmlns:entry[xmlns:title[node()]]')
Это маршрут:
match 'contacts/xmlns:title' => 'contacts#show'
Все контакты Вид:
<% @mycontacts.each do |c| %>
Name: <%= c.xpath('xmlns:title').text %>
Email: <%= c.xpath('gd:email/@address').text %>
<%= link_to "Update Contact", contact_path(c.xpath('xmlns:title').text) %></p>
<% end %>
Шоу вид:
<%= @contact.xpath('xmlns:title') %>
<%= @contact.xpath('gd:email/@address') %>
Когда я нажимаю на ссылку, чтобы просмотреть отдельный контакт, я получаю сообщение об ошибке:
undefined method `xpath' for #<Enumerator:0x3cc6570>
EDIT:
Было бы лучше сохранить все в модели, обновить в приложении, а затем преобразовать в XML и отправить его обратно? Это кажется немного длинным, но это будет лучшая практика?
Спасибо за ответ, я думал, что существует способ изменить детали XML на лету, но вы правы, получите его в модели, он чище. Я попадаю на корпус с HTTParty – Richlewis