Одна форма, много экземпляров модели: JSON и AJAX (на Rails) - PullRequest
0 голосов
/ 02 февраля 2011

Справочная информация : (Если вы ленивы, но все еще хотите помочь, попробуйте просто перейти к вопросу ниже) У меня есть модельный узел с отношениями один-ко-многим с самим собой (то есть дерево).Я хотел бы иметь страницу, где пользователь может работать со всем деревом.Я отправлю дерево в виде объекта javascript, используя JSON:

tree = <%= raw @node.to_json(:include => :nodes) %>

Будет форма с полями, соответствующими свойствам узла (имя, позиция, дата и т. Д.).Мой вопрос: каков наилучший способ построить эту форму, чтобы я мог работать со всеми вышеупомянутыми узлами?

Мне понадобится какой-то виджет для выбора узла.Для простоты, скажем, это просто набор <a> s.

Очевидно, что мне понадобится JavaScript, чтобы заполнить форму данными выбранного узла.Как мне затем присоединить JavaScript к элементам <a>, чтобы заполнить форму данными JSON?Например, у меня может быть рекурсивный частичный _write_node.html.erb:

<a onclick="loadNodeIntoForm("<%=str%>)">node.name</a>
<% for i in 0..node.nodes.size %>
    <%= render :partial => 'write_node', locals => { :node => node.nodes[i], :str => str + '.nodes[' + i.to_s + ']' } %>
<% end %>

, который я вызываю с использованием

<%= render :partial => 'write_node', locals => { :node => @node, :str => 'tree.node' } %>

Или, возможно, я мог бы использовать JavaScript для построения <a> sна стороне клиента, пройдя через tree, что позволило бы избежать хакерской конкатенации строк выше?И я думал что-то вроде

function loadNodeIntoForm(node) {
    document.getElementById('node[name]').value = node.name;
    document.getElementById('node[date]').value = date.name;
    //etc.
}

Тогда у меня также будет JavaScript, который будет обновлять объекты JSON при редактировании формы.

Вопрос: Наконец, какя могу использовать AJAX для сохранения объектов без использования формы?Например, я хочу, чтобы пользователь мог редактировать несколько узлов перед сохранением, поэтому я не могу просто использовать ajax в форме, которая будет отправлять только отредактированный в данный момент узел.Можно ли просто POST-объект JSON?

1 Ответ

1 голос
/ 02 февраля 2011

Я взял ленивый маршрут и перешел к вашему вопросу.AJAX не имеет прямого отношения к формам.Вы можете просто опубликовать объект JSON.Используйте jQuery.post .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...