Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.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
在Rails应用程序中使用HTML将多个复选框输出保存到单个对象属性_Html_Ruby On Rails_Checkbox_Strong Parameters - Fatal编程技术网

在Rails应用程序中使用HTML将多个复选框输出保存到单个对象属性

在Rails应用程序中使用HTML将多个复选框输出保存到单个对象属性,html,ruby-on-rails,checkbox,strong-parameters,Html,Ruby On Rails,Checkbox,Strong Parameters,我正在尝试将HTML调查转换为Rails应用程序,但在尝试继续使用复选框功能时遇到了困难。简单地说,问题在于选中复选框然后提交调查不会在数据库中保存任何内容 我的模型: class Survey < ActiveRecord::Base partial_updates = false include ActiveModel::Serialization serialize :checkbox_question, Hash end 因此,我正在使用的Rails表单似乎正在工作。它似乎无

我正在尝试将HTML调查转换为Rails应用程序,但在尝试继续使用复选框功能时遇到了困难。简单地说,问题在于选中复选框然后提交调查不会在数据库中保存任何内容

我的模型:

class Survey < ActiveRecord::Base

partial_updates = false
include ActiveModel::Serialization
serialize :checkbox_question, Hash

end
因此,我正在使用的Rails表单似乎正在工作。它似乎无法拯救

我尝试过修复这里、这里和这里描述的类似听起来的问题,但都没有运气


如有任何建议,将不胜感激。谢谢大家!

首先,从模型中删除serialize:checkbox\u question,Hash。然后,在控制器中将{:checkbox\u-question=>{}更改为just:checkbox\u-question

现在,尝试将该字段作为字符串数组单独传递

<%= check_box_tag "checkbox_question_one[option_one]" %><label>Option 1</label>
<%= check_box_tag "checkbox_question_one[option_two]" %><label>Option 1</label> 
<%= check_box_tag "checkbox_question_one[option_three]" %><label>Option 1</label>
当你需要这些值时,用split获取它们

foo = @survey.checkbox_question_one.split(',')
# ["option_one", "option_three"]

专业提示:如果你想得到一些帮助,把这个问题缩短10倍。也可以用代码来解释代码,而不是用文字,例如模型和关联。只是尝试一下。不走运。我有两个不同的错误。首先是{option_one=>1,option_three=>1}的未定义方法“join”的NoMethodError。第二,未定义方法“split”的命名错误。我还尝试从我的模型中删除serialize:checkbox_问题以及控制器中survey_参数中的相应符号。再一次,同样的错误。好吧,经过更多的修补,我想我已经让它工作了!必须从我的模型中删除serialize:checkbox\u问题,以及survey\u参数中的符号。然后,我迭代了散列,仅当散列中的值为1时,才将键名添加到字符串中。然后我将结果字符串保存到@survey.checkbox\u question。然后分割错误在视图中消失了。非常感谢。
{"utf8"=>"✓", "authenticity_token"=>"0tmM1/CXRY9XYA/3tdzBZ6frTom8EGZvaYlq3EEE6vc=", "survey"=>{"question_one"=>"answer 1", "question_two"=>"answer 2", . . .  "checkbox_question"=>{"option_one"=>"1", "option_two"=>"0", "option_three"=>"1"} . . . .}
<%= check_box_tag "checkbox_question_one[option_one]" %><label>Option 1</label>
<%= check_box_tag "checkbox_question_one[option_two]" %><label>Option 1</label> 
<%= check_box_tag "checkbox_question_one[option_three]" %><label>Option 1</label>
@hash = params[:checkbox_question]

@string = ""
@hash.each do |key, value|
  if @hash[key] == "1"
    @string = @string + key + ","
  end
end

@survey.checkbox_question_one = @string
# "option_one,option_three"
foo = @survey.checkbox_question_one.split(',')
# ["option_one", "option_three"]