Rails:如何将JS对象转换为数组参数

Rails: How to turn JS object to array params

本文关键字:转换 数组 参数 对象 JS Rails      更新时间:2023-11-26

我有这个JS对象:

obj={id:80,attr_name:"avatar",style:"small",upload_path:null}

然后,我用AJAX将这个对象作为params发布到控制器。我想在参数中看到的是这样的东西:

params[:attachment][:id] = 80
params[:attachment][:attr_name] = "avatar"

等等…

因此,在JS方面,我创建了一个包含附件参数的对象:

{attachment:obj}

当我得到params[:attachment]的结果它[对象对象]。

如何将JS对象转换为params[:attachment]中的数组?

谢谢,

一种方法是,而不是{attachment:obj},使其像这样:

postData = {
  "attachment[id]": obj.id,
  "attachment[attr_name]": obj.attr_name
}

另一种方法是将JS对象字符串化为JSON,并在另一端使用JSON.parse。

然而,当您将对象传递给"data"参数时,jQuery.ajax应该按原样发送它

假设您使用的是jQuery(这是Rails的默认设置),这将起作用:

<h1>TEST</h1>
<script type="text/javascript">
  $(function() {
    params = {};
    params.attachment = {};
    params.attachment.id = 80;
    $.post( "/the_action", params, function(data) {
      alert("response");  
    }, "json");
  });
</script>

你可以在控制器中这样验证:

class MainController < ApplicationController
  respond_to :html, :json
  def index
  end

  def the_action
    print params
    puts params[:attachment][:id]
    render nothing: true
  end
end

这应该以您想要的格式打印数据。