通过哈希或数组更新

我想更新Period Model中subject_id字段。期间循环将在Form中。 因此,当我提交表单时,传递的参数将作为哈希,其中Key是Period.id ,值是subject_id 。 那么,我该如何更新它。

在我的Show.html.erb中我有

        

我有SHOW的动作

 def show @period = Period.all end 

在我有的更新操作

 def update @period = params[:id] keys, values = @period.map { |k,v| [k.to_i, v.to_i] }.transpose values.each { |f| Period.all.update_all(:subject_id => f) } end 

其中@period = params[:id]给出一个参数

  #Parameters: {"utf8"=>"✓", "authenticity_token"=>"8SNaUIQ6ZwjYOqBX07QYyVJsbuvYTL2TotSqIg0yj98nYXq5XqJ5XRHqlCvl1aw0lLg9vowyDOl3Hhm+hYDaOA==", "id"=>{"1"=>"3", "4"=>"2"}, "commit"=>"Save changes"} 
  1. 其中哈希中的1和4是period_id
  2. 散列中的3和2是subject_id。

然后我将哈希转换为键和值

  1. 其中键是period_id
  2. 值是subject_id。

然后我循环使用值并更新Period。

它正在更新,但问题是只更新了最后一个值2,其中每个subject_id变为2,我不会发生3(第一个值)发生的情况,只更新最后一个值。 我只是敲打头来解决这个问题两天。 我是铁路新手,请善待。 谢谢你提前回答。

你说你有一个散列,其中键是period_id ,值是subject_id 。 假设您的哈希名称是period_and_subjects ,您希望这样做:

 Period.update(period_and_subjects.keys, period_and_subject.values) 

因此,如果你的period_and_subjects哈希看起来像{1 => 2, 4 => 5} ,它将更新id为1的句点,主题为id 2,句点为id 4,主题为id 5。

查看文档以进行update