Я создаю приложение на Rails 3, которое использует вложенную форму с двумя уровнями вложенных атрибутов, т.е.
<%= form_for @workareas do |f| %>
<%= f.text_field :workarea_name %>
<%= f.fields_for :projects do |project| %>
<%= f.text_field :project_name %>
<%= f.fields_for :tasks do |task| %>
<%= f.text_field :task_name %>
<%= f.check_box :complete %>
<%= f.check_box :urgent %>
<%= f.check_box :today %>
<% end %>
<% end %>
<% end %>
(я понимаю, что этот псевдокод недопустим на 100%)
Я использую кокон для обработки вложенных форм.Я использовал Райан nested_forms, но переключился, поскольку Coccon, казалось, лучше справился с этой проблемой.
Я хотел бы отобразить задачи в таблице, что-то вроде:
<table class="tasks">
<tr>
<th><%= f.label :task_name %></th>
<th><%= f.label :complete %></th>
<th><%= f.label :urgent %></th>
<th><%= f.label :today %></th>
</tr>
<%= f.fields_for :tasks do |task| %>
<tr>
<td><%= f.text_field :task_name %></td>
<td><%= f.check_box :complete %></td>
<td><%= f.check_box :urgent %></td>
<td><%= f.check_box :today %></td>
</tr>
<% end %>
</table>
<%= link_to_add_association "New Task", f, :tasks %>
I 'Я сталкиваюсь с проблемами при вставке новых задач в правильное расположение в макете.Это потому, что будет несколько таблиц задач, по одной под каждым проектом в представлении.
Я понимаю, что могу использовать сценарий для указания позиции, в которую добавляются поля:
$(function() {
$("a.add_fields.").
data("association-insertion-position", 'after').
data("association-insertion-node", '.tasks tr:last');
});
Ноне могу понять, как передать, к какому проекту относятся задачи.Например, если у меня есть два проекта, и я пытаюсь добавить задачи во второй проект, поля в настоящее время добавляются в первый проект.(Они правильно связаны с проектом 2 при сохранении, однако, это просто проблема макета).
Кто-нибудь сталкивался с этой проблемой раньше?Есть ли лучший селектор для использования для "ассоциации-вставки-узла".Я бы приветствовал любые указания или предложения.
Спасибо !!
ОБНОВЛЕНИЕ
Мне до сих пор не удалось найти решение этой проблемы.По сути, я хочу добавить вложенные дочерние элементы, содержащиеся в блоке <tr>
, в родительскую форму.Я не смог сделать эту работу так, как я хотел бы / ожидаю.
В качестве временного решения я теперь отображаю дочерние элементы в блоке <li>
.Блок <li>
содержит полный блок <table><tbody><tr>
для каждого дочернего элемента.Это не совсем идеально с точки зрения форматирования, но лучшее, что я смог придумать.
Я собираюсь оставить этот вопрос открытым, по крайней мере, пока, в надежде, чтокто-то может предложить лучшее решение.
Спасибо всем, кто ответил до сих пор.