更新一个模型的许多寄存器需要太多代码

时间:2016-11-25 09:04:48

标签: ruby-on-rails ruby-on-rails-5

我认为必须存在一种更简单的方法来制作表格来更新一个模型的记录列表。

我需要执行所有这些操作来执行更新,而不会发出警告Unpermitted parameters

在视图中:

<%=form_tag(action:"update")%>
  <%= fields_for "user_papers" do |up| %>
    <% @papers.each do |paper| %>
      <%= up.fields_for "paper[]",paper do |paper_builder|  %>
        <%= paper_builder.text_field "consum"%> 
      <% end %>
    <% end %>
  <% end %>
<% end %>

在控制器中:

def update
  @papers=PaperConsumption.where(...)
  @papers=@papers.update(paper_consumption_params[:paper].keys, paper_consumption_params[:paper].values)
end

private
  def paper_consumption_params
    params.require(:user_papers).permit(:paper =>[:status,:daconsumo_real,:nucantidad_rec,:paper_correction])
  end
  • 请注意,params.require(:user_papers)是指第一个fields_for
  • 并且permit(:paper...指的是segond fields_for

我认为太多代码用于更新一个表的许多寄存器

不是吗?我可以减少代码吗?

谢谢(stackoverflow是我工作中唯一的合作伙伴:)

0 个答案:

没有答案