gpt4 book ai didi

javascript - 如何在 Rails 3 中定位嵌套的表单元素

转载 作者:行者123 更新时间:2023-12-02 05:07:39 24 4
gpt4 key购买 nike

我正在创建一个 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% 有效的)

我正在使用 cocoon 来处理嵌套表单。我之前使用的是 Ryan 的 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 %>

我在将新任务插入布局中的正确位置时遇到问题。这是因为会有多个任务表, View 上每个项目下都有一个。

我意识到我可以使用脚本来指定添加字段的位置:

$(function() {
$("a.add_fields.").
data("association-insertion-position", 'after').
data("association-insertion-node", '.tasks tr:last');
});

但无法弄清楚如何传递任务属于哪个项目。例如,如果我有两个项目,并尝试将任务添加到第二个项目,则当前正在将这些字段添加到第一个项目。 (它们在保存时与项目 2 正确关联,但这纯粹是布局问题)。

有没有人遇到过这个问题?是否有更好的选择器用于“关联插入节点”。我欢迎任何指示或建议。

谢谢!!

更新

我还没有设法找到解决这个问题的办法。本质上我想要做的是添加嵌套的子元素,包含在 <tr> 中。 block ,到父窗体。我无法按照我希望/期望的方式完成这项工作。

作为临时解决方案,我现在在 <li> 中渲染子元素堵塞。 <li> block 包含一个完整的 <table><tbody><tr>为每个 child 积木。这在格式方面不太理想,但这是我能想到的最好的。

我打算让这个问题悬而未决,至少暂时如此,希望有人能提供更好的解决方案。

感谢到目前为止所有回复的人。

最佳答案

我不知道你的表格是如何显示的,我的 JS 也有点生疏,但你可以像这样在 link_to 中传递一个数据属性:

<%= link_to_add_association "New Task", f, :tasks, 'data-project_id' => "project_#{project.id}" %>

然后在你的函数中:

var project_id = $(this).data("project_id");
$("#" + project_id + " a.add_fields.").

在 CodeSchool.com 上有一个很好的教程,他们使用 jQuery Air:Captain's Log

关于javascript - 如何在 Rails 3 中定位嵌套的表单元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9346456/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com