Это в Синатре. В моем 'get' я создаю переменную экземпляра, которая является объектом nokogiri, созданным из внешнего XML-файла. Я иду в файл erb и анализирую этот объект nokogiri, чтобы сделать макет страницы. В моем методе публикации мне нужен доступ к тому же объекту nokogiri (я могу вернуться к публикации несколько раз и могу изменить объект nokogiri). Я сделал это, установив скрытую переменную на странице erb, например:
<input type="hidden" name="test" value= '<%= @test %>' >
Затем в своем посте я создаю объект nokogiri из этой переменной следующим образом:
@test = Nokogiri::XML(params["test"])
Это казалось неуклюжим, но я не разбираюсь в этом. В любом случае, все работало нормально, за исключением того, что где-то в строке мои встроенные кавычки в xml искажаются. Например, узел в моем файле начинается так:
<property name="blah" value='{"name:foo"}'> </property>
И когда я делаю пут в своем посте params ["test"], я получаю это:
<property name="blah" value="{"name:foo"}"> </property>
(одиночные кавычки стали двойными кавычками) и, наконец, после преобразования его обратно в объект нокогири со следующим кодом:
@test = Nokogiri::XML(params["test"])
Я получаю это:
<property name="blah" value="{"/>name:foo"}"> </root>
Есть ли лучший способ сохранить доступ к объекту? Если нет, то есть ли способ сохранить мои встроенные кавычки (я думаю, что установка скрытой переменной в файле erb - это то, где она будет обработана)