使用下拉阵列轨道进行更新

时间:2016-04-15 08:38:56

标签: ruby-on-rails ruby forms

通过下拉列表更新无效。我在表单标签中有form_tag我有循环。因此,该值将传递给数组。如何更新它的值。

在我的Period控制器中我有

def period
 @period = Period.all
end

def period_update
 Period.update(perio_params)
end

private
 def perio_params
   params.require([:period][:subject_id]).permit(:subject_id)
 end

在period_update视图中我有

<%= form_tag perio_update_institutes_path, method: :put do  %>
<% @period.each do |p|%> 
    <%= p.subject.name %>
<%= select_tag('subject_id', options_for_select(Subject.all.collect{ |s| [s.name, s.id]}), {prompt: 'Select Sub'})%>

<%end%>
<%= submit_tag %> 

{"utf8"=>"✓", "_method"=>"put", "authenticity_token"=>"6LJrh2ct7VMGU6Siq/RXIMGz4kkxkVN81Jqa+eRcKb3rXq3XzBlv8gjHvjjVsPsJ4LF7ZEHF/GQ8+0906lhyUg==", "period"=>{"subject_id"=>["2", "2"]}, "commit"=>"Save changes"}

如何更新subject_id数组。

错误是

no implicit conversion of Symbol into Integer

我有主题模型,所有主题都在集合中。 Period模型具有subject_id。我该如何更新? 我是rails的新手,我对此感到困惑。谢谢你提前。

1 个答案:

答案 0 :(得分:0)

尝试使用options_from_collection_for_select时的行为不同:

<%= select_tag('subject_id', options_from_collection_for_select(Subject.all, :id, :name), {prompt: 'Select Sub'}) %>