複数のデータをフォームに表示してそのうちの一つを返して更新を行う

  • テンプレート


<% for @idea in @ideas %>
<%= form_tag :action => 'update_scale' %>
<%= hidden_field 'idea[]','id',:size => 20%> 
<%= text_field 'idea[]','foo',:size => 20%> 
<%= text_field 'idea[]','bar',:size => 20%> 
<%= text_field 'idea[]','buzz',:size => 20%> 
<%= submit_tag '更新' %>
<%= end_form_tag %><% end %>

  • コントローラ


if (@idea = Idea.update(params[:idea].keys,params[:idea].values)[0]).errors.empty?
flash[:notice] = "success"
  redirect_to :action => '元のテンプレート'
else
flash[:notice] = "fail"
render :action => '元のテンプレート'
end


返り値はerrors.empty?を見るべし。
このやり方がわかるまで無駄に時間がかかってしもうた。
げんなり。