0

在浏览了许多不适合或解决我的问题的解决方案后,我在这里发布了这个问题:

我使用 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"}

提前致谢,非常感谢您的帮助!

4

1 回答 1

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上输入,请原谅不完整的代码,希望它能给你一些想法

于 2012-06-17T17:16:47.563 回答