Здесь:
<% @active_patients.each do |list| %>
<%= list.patient.role.user.first_name %> <%= list.patient.role.user.last_name %>
<%= link_to patient_path(id: @patient.id), class: "btn" do %>View<% end %> . #### THIS IS THE LINE
<% end %>
у вас есть переменная list
для вас. Похоже, что вы получаете patient
, выполняя list.patient
, как здесь:
<%= list.patient.role.user.first_name %> <%= list.patient.role.user.last_name %>
Но затем вы пытаетесь использовать переменную с именем @patient
, здесь:
[112 ]
когда у вас нет переменной @patient
. Итак, вы получаете ошибку nil
.
Вместо этого, кажется, вы должны сделать:
<%= link_to patient_path(id: list.patient.id), class: "btn" do %>View<% end %> .
Или, как указывает Милгнер, вы можете просто сделать:
<%= link_to patient_path(list.patient), class: "btn" do %>View<% end %> .
Также вы можете захотеть изучите Закон Деметры , который вы нарушаете (IMO), когда делаете:
list.patient.role.user.first_name
Библиотека Boost Serialization поддерживает XML. Эта библиотека в основном состоит в:
Среди улучшений по сравнению с MFC поддержка XML. Обратите внимание необходимое управление XML-схемой этой сериализации. Это использует свою собственную схему.
Мы используем TinyXML для всех наших потребностей XML быть этим MFC или прямой C++.
что относительно RapidXML я использую его в приложении MFC с некоторой модификацией для поддержки UTF-16 со станд.:: строка. Я довольно удовлетворен им до сих пор.
Хорошее решение было бы libxml. Это обеспечивает легкий парсинг SAX и структуры данных для обработки XML. Существует несколько библиотек DOM, которые создаются сверху libxml.
Unfortunatly это - библиотека C, но обертки C++ доступны.
Несколько лет назад я переключился от MSXML до libxml из-за производительности, выпускает Вас упомянутый.
Если Вы решаете использовать libxml, необходимо также смотреть на libxslt.
Мы используем Xerces-C++. Было легко установить, и производительность достаточно хороша, таким образом, мы не должны думать об изменении. Однако мы не XML тяжелый.
Я действительно слушал подкаст Scott Hanselman (с Минут Hansel), где они обсуждают производительность XML MSXML и XSLT.
Это старая проблема. В 1999 и 2000 годах я был руководителем группы разработчиков с наиболее критическими зависимостями в крупнейшем программном проекте в мире, и именно этот вопрос был в центре моей работы в то время. Я убежден, что колесо было изобретено несколькими инженерами, которые не знали, что другие уже изобрели его. То же самое можно сказать и о связывании данных XML в C++. Я тоже изобрел его и совершенствовал более 10 лет в различных проектах. У меня есть решение, которое решает проблемы, отмеченные здесь, и некоторые дополнительные вопросы, которые постоянно возникают:
XML Updates. Это возможность повторного применения подмножества XML в существующей объектной модели. Во многих случаях XML связан с индексируемыми объектами, и мы не можем позволить себе повторную индексацию при каждом обновлении.
Управление интерфейсами COM и CORBA. В том же отношении, что связывание данных XML может быть автоматизировано с помощью объектно-ориентированной практики - так же могут быть автоматизированы и экземпляры интерфейсных объектов, которые предоставляют эти данные на прикладном уровне.
Отслеживание состояния. Приложению часто необходимо различать пустое значение и отсутствующее значение - оба создают пустую строку. Это обеспечивает валидацию вместе с привязкой данных.
Исходный код использует наименее ограничительную лицензию - меньше, чем GPL. Проект поддерживается и управляется отсюда:
http://www.codeproject.com/KB/XML/XMLFoundation.aspx
Теперь, когда на дворе 2010 год, я верю, что никто больше не будет пытаться изобрести колесо, потому что есть из чего выбирать. IMHO - это колесо является наиболее отшлифованной и хорошо округленной реализацией.
Наслаждайтесь.