【发布时间】:2016-08-08 18:12:55
【问题描述】:
我想更新 周期模型 中的 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 %>
展示操作我有
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 和 4 是 period_id
- 散列中的3和2是subject_id。
然后我将哈希转换为键和值
- 其中键是 period_id
- values 是 subject_id。
然后我循环这些值并更新周期。
它正在更新,但问题只是最后一个值2被更新,每个subject_id都变成2,我不知道3(第一个值)会发生什么,只有最后一个值被更新。 我只是用两天的时间来解决这个问题。我是rails新手,请善待。感谢您提前回答。
【问题讨论】:
标签: ruby-on-rails ruby forms hash