簡體   English   中英

通過哈希或數組更新

[英]update via Hash or Array

我想更新期間模型中subject_id字段,其中期間循環將在表單內。 因此,當我提交表單時,傳遞的參數作為哈希表傳入,其中Key是Period.id ,而Value是subject_id 因此,如何更新它。

在我的Show.html.erb中,

 <%= form_tag update_institutes_path, method: : put do %> <% @period.each do |cc | %> <%= cc.subject.name %> <%= collection_select('id', cc.id, Subject.all, : id, : name, selected: cc.id, prompt: true) %> <% end %> <%= submit_tag %> <% end %> 

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。

然后,我循環了值並更新了期間。

它正在更新,但是問題是僅最后一個值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為2的主題更新ID為1的期間,並將ID為5的主題更新為ID 4。

查看文檔以進行update

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM