Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 处理动态生成的rails表单_Ruby On Rails - Fatal编程技术网

Ruby on rails 处理动态生成的rails表单

Ruby on rails 处理动态生成的rails表单,ruby-on-rails,Ruby On Rails,我正在尝试处理以下输入 Parameters: {"utf8"=>"✓", "authenticity_token"=>"ogwCJx5J03kvFrve1B/BQ5jBlqsGaqP2En7sAe5XcBA=", "contact_attempt_id"=>"79","3"=>"8", "7"=>"22"} 我可以很容易地获取联系人的尝试id和响应代码。最后两个参数被证明是难以捉摸的 键是问题的数据库id,而值是答案的数据库id。我已经尝试在params散列中查

我正在尝试处理以下输入

Parameters: {"utf8"=>"✓", "authenticity_token"=>"ogwCJx5J03kvFrve1B/BQ5jBlqsGaqP2En7sAe5XcBA=", "contact_attempt_id"=>"79","3"=>"8", "7"=>"22"}
我可以很容易地获取联系人的尝试id和响应代码。最后两个参数被证明是难以捉摸的

键是问题的数据库id,而值是答案的数据库id。我已经尝试在params散列中查找id的问题中循环,如下所示

questions.each do |q|
  if !params[q.id].nil?
   c = contact_responses.create
   c.question_id = q.id
   c.answer_id = params[q.id]
   c.save
  end

但是,我无法获得答案id。

数据库中的
id
将是一个整数<代码>参数散列键是
字符串/符号
散列无差异访问

将您的代码更改为此

questions.each do |q|
  unless params[q.id.to_s].blank?
   c = contact_responses.create
   c.question_id = q.id
   c.answer_id = params[q.id.to_s].to_i
   c.save
  end

仍然得到同样的结果。答案id在数据库中显示为nil。如果我在创建联系人响应时硬编码了一个值,即c.answer\u id=40,它会将其保存到数据库中。尝试在
参数[q.id.to\s]
上执行
to\u I
。修改了我的回答添加to_我只是在数据库中将其设置为0,而不是正确的值。它变为零的唯一方式是,当您将
参数[q.id.to_s]
设置为无法转换为整数的字符串时。例如:
“a”。to_i
将为零。尝试记录这些值,看看您是否真的得到了数字。仅注销params[q.id.to_s]返回正确的值,尝试将其转换为Int返回0。