【问题标题】:How to dynamically Update/Edit/Delete existing record within a list如何动态更新/编辑/删除列表中的现有记录
【发布时间】:2014-07-21 20:20:51
【问题描述】:

Rails 新手,可以帮助了解如何允许用户在不离开页面的情况下更新列表中的记录。

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

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

我的 DELETE 功能工作正常,这是我遇到问题的 UPDATE 功能...

这是 children#update 控制器:

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 :user / 用户模型 has_many :children

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

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

【问题讨论】:

  • 你应该考虑删除这个问题。

标签: ruby-on-rails form-for


【解决方案1】:

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

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

【讨论】:

  • 另一个选项可能是 X-Editable 用于就地编辑。
  • 谢谢凯尔!会检查那些!
猜你喜欢
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 1970-01-01
  • 2016-10-07
  • 2017-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多