如何动态更新/编辑/删除列表中的现有记录

时间:2014-07-21 20:20:52

标签: ruby-on-rails form-for

对rails很新,可以使用一些帮助来弄清楚如何允许用户更新列表中的记录而无需离开页面。

具体来说,我在用户输入孩子信息的页面上有两个表单。

一种形式是用户添加新孩子的信息以创建下面的孩子列表。 子项列表显示用户以前输入的子信息。 但是,在子列表中,我希望允许用户删除和编辑单个孩子的记录。

我的DELETE功能工作正常,这是UPDATE功能,我遇到了麻烦......

这是孩子们#update controller:

def update
  raise
  @user = current_user
  @child = Child.find(params[:id])
  if @child.update_attributes(child_params)
    flash[:notice] = "Child info was updated."
  else
    flash[:error] = "Sorry.  Something went wrong, please try again."
  end
  respond_with(@child) do |f|
    f.html { redirect_to new_child_path }
  end
end

这是子列表形式的部分视图:

<form role="form">
  <% i = 1 %>
  <% @user.children.each do |child| %>
  <div class="col-md-12 form-align list-line">
    <div class="col-md-10 form-align">
      <%= label_tag child, "Child #{i}:" %>
      <% i += 1 %>
    </div>
  </div>
  <%= form_for(child, method: :put) do |f| %>
    <div class="col-md-12 form-align">
      <div class='col-md-4 form-align'>
        <%= f.label :first_name, class: 'sr-only' %>
        <%= f.text_field :first_name, value: child.first_name, class: 'form-control form-control-align'  %>
      </div>
      <div class='col-md-4 form-align'>
        <%= f.label :middle_name, class: "sr-only" %>
        <%= f.text_field :middle_name, value: child.middle_name, class: 'form-control form-control-align'  %>
      </div>
      <div class='col-md-4 form-align'>
        <%= f.label :last_name, class: "sr-only" %>
        <%= f.text_field :last_name, value: child.last_name, class: 'form-control form-control-align'  %>
      </div>
    </div>
    <div class="col-md-12 form-align">
      <div class="col-md-4 form-group form-inline form-align">
        <%= f.label :birth_date, "D.O.B." %>
        <%= f.date_field  :birth_date, value: child.birth_date,  class: 'form-control' %>
      </div>
      <div class="col-md-4 form-group form-inline form-align">
        <%= f.label :deceased, "Deceased?" %>
        <%= f.select :deceased, value: child.deceased?,  class: 'form-control form-control-align' %>
      </div>
      <%= f.submit "Update" %>
      <%= link_to '<i class="glyphicon glyphicon-remove red"></i>'.html_safe, child,  method: :delete %>
    </div>
  <% end %>
  <% end %>
</form>

...和子模型:简称belongs_to:用户/用户模型has_many:children

...和路线:资源:儿童

我想我需要通过我的form_for传递一些选项,但无法找到那些需要的选项......

1 个答案:

答案 0 :(得分:0)

我建议使用像Best in Place这样的宝石来允许对列表中的某些字段进行就地编辑。

如果您不想进行就地编辑,请使用包含编辑表单的模态视图。