Rails 4 - 如何在不刷新页面的情况下触发对象编辑表单

时间:2013-11-29 10:32:21

标签: ruby-on-rails

嗨,谢谢你们对此进行调查。

我有一个显示在我页面上的对象列表。现在,当用户选择其中一个对象时,我想显示此对象的“编辑”表单,而不刷新页面并允许用户更新它。我已经有一个部分表格:远程标签。我无法弄清楚的是如何触发此编辑表单并将正确的对象传递给它。

提前致谢!

2 个答案:

答案 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]

因此,我们将对象属性设置为表单并显示该表单