嗨,谢谢你们对此进行调查。
我有一个显示在我页面上的对象列表。现在,当用户选择其中一个对象时,我想显示此对象的“编辑”表单,而不刷新页面并允许用户更新它。我已经有一个部分表格:远程标签。我无法弄清楚的是如何触发此编辑表单并将正确的对象传递给它。
提前致谢!
答案 0 :(得分:1)
您可以在隐藏的div中为每个项目添加部分表单,并仅在需要时使用javascript显示div:
<% @items.each do |item| %>
<div>
<%= item.label %>
<a href="#" class="editLink">Edit</a>
<div class="editFormWrapper">
<%= render '_form', locals: {item: item} %>
</div>
</div>
<% end %>
的CSS:
.editFormWrapper {
display: none;
}
javascript(使用jquery)
$(document).ready(function() {
$('.editLink').on('click', function() {
$(this).siblings('editFormWrapper').show(); // or .slideDown(); or any other effect
});
});
如果页面包含大量项目,或者隐藏的表单很大,那么最好使用Ajax请求并“按需”包含编辑表单,以保持页面权重最小化。 / p>
答案 1 :(得分:0)
使用对象渲染页面时,可以在javascript变量中呈现对象数组
<script>
OBJ_ARR = {
*obj_id1* = {
name: 'test1',
desc: 'test test'
},
*obj_id2* = {
name: 'test2',
desc: 'test2 test'
},
......
}
</scpipt>
接下来我们使用javascript场景 单击对象时,您将获得某个object_id,然后从数组中获取适当的对象
OBJ_ARR[object_id]
因此,我们将对象属性设置为表单并显示该表单