【发布时间】:2014-09-22 20:54:10
【问题描述】:
我有一个与之前的表单传递相同参数的表单:
<%= 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' %>
第一个表单工作正常,第二个表单“获取另一个”给了我错误can't convert Symbol into Integer这行:
@equipment_ids = params[:workout][:equipment_ids].collect{|s| s.to_i}
传递的第一种和第二种形式的参数是:
{"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"}
唯一的区别是转义的反斜杠。我不确定为什么这些会导致问题?
【问题讨论】:
-
这里的问题是因为您试图将字段作为字符串而不是哈希传递。您所看到的反斜杠没有问题,而是无法理解 params[:workout] 传递到字段然后通过表单提交不会神奇地变成哈希。您能否解释一下为什么要尝试这样做,而不是仅仅将锻炼保存在数据库中?
-
是的,你是对的,我现在正在努力
标签: ruby-on-rails ruby-on-rails-3 params