その前のフォームと同じパラメーターを渡すフォームがあります。
<%= form_tag({:controller => "workouts", :action => "random"}) do %>
<%= hidden_field_tag :workout, params[:workout] %>
<%= hidden_field_tag :time, params[:time] %>
<%= submit_tag "Get Another", :class => 'btn' %>
最初の形式は正常に機能し、「別の形式を取得」する2番目の形式では、次のcan't convert Symbol into Integer
行のエラーが発生します。
@equipment_ids = params[:workout][:equipment_ids].collect{|s| s.to_i}
渡される最初と2番目の形式のパラメーターは次のとおりです。
{"utf8"=>"✓",
"authenticity_token"=>"qj/Q/YWvLKK3A3paAnEom4oTFtq44daX6dvEb8qmgtE=",
"workout"=>{"equipment_ids"=>["",
"508",
"518"]},
"time"=>"25",
"commit"=>"Get Workout"}
{"utf8"=>"✓",
"authenticity_token"=>"qj/Q/YWvLKK3A3paAnEom4oTFtq44daX6dvEb8qmgtE=",
"workout"=>"{\"equipment_ids\"=>[\"\",
\"508\",
\"518\"]}",
"time"=>"25",
"commit"=>"Get Another"}
唯一の違いは、バックスラッシュのエスケープです。なぜこれらが問題を引き起こすのかわかりませんか?