在浏览了许多不适合或解决我问题的解决方案后,我在这里发布了这个问题:
我使用javascript在数据表单中填充隐藏字段并将其发送到rails控制器。这适用于普通变量,但我不能让它与数组一起使用。这就是我的工作:
Javascript(jQuery):
$("#my_form").submit(function() {
var testvar = 5;
var testarr = [];
testarr[0] = "test data";
testarr[1] = "other data";
$('input[name=testvar]').val(testvar);
$('input[name=testarr]').val(JSON.stringify(testarr));
})
RoR控制器:
def create
testvar = params[:testvar]
data = params[:testarr]
testarr = ActiveSupport::JSON.decode(data)
// other commands
end
它适用于testvar,但对于数组,它总是会产生错误
can't convert nil into String
我做错了什么?
请求如下所示:
{"utf8"=>"✓",
"authenticity_token"=>"1qFA3NTqUxoI1jusbwrVi5AWIpJz9tbUGR0KuCtNKTs=",
"testvar"=>"5",
"testarr"=>"[\"test data\",
\"other data\"]",
"commit"=>"Submit my form data"}
提前致谢,非常感谢您的帮助!
答案 0 :(得分:1)
如果您在末尾用[]命名输入字段,rails会将其作为数组映射到params
<input type="hidden" name="testarr[]" />
$(....).val(testarr.join(","))
或为每个输入添加新输入而不是连接,它们都具有相同的输入名称
$(....).submit(....
$form = $(this)
testarr.each
$form.append('<input type="hidden" name="testarr[]" value="...itemValue..." />')
在控制器中
params[:testarr].each do ....
在ipad上键入,请原谅不完整的代码,希望它能为您提供一些想法