将带有JavaScript的json发布到Rails-未定义的方法stringify键
为了在我的服务器上创建一个模型对象,我正在尝试将一个Javascript对象发布到我的Rails API中 下面是我如何定义Javascript对象(咖啡脚本): 因此,函数参数包含我要保存的列表 在Rails中,我只需创建以下列表:将带有JavaScript的json发布到Rails-未定义的方法stringify键,javascript,ruby-on-rails,coffeescript,Javascript,Ruby On Rails,Coffeescript,为了在我的服务器上创建一个模型对象,我正在尝试将一个Javascript对象发布到我的Rails API中 下面是我如何定义Javascript对象(咖啡脚本): 因此,函数参数包含我要保存的列表 在Rails中,我只需创建以下列表: @list = List.create name:params[:list] if @list.save head :ok else respond_with error:'Error while creating the
@list = List.create name:params[:list]
if @list.save
head :ok
else
respond_with error:'Error while creating the list.'
end
我得到以下错误:未定义“[object]”的方法“stringify\u keys”:String
这就是在Rails中设置params
变量的方式:
Parameters: {"list"=>"[object Object]"}
我尝试在JS中使用JSON.stringify
方法,但后来我的参数散列变得不可读:
JSON.stringify(params)
给予
更新
我不明白为什么,但是现在,如果我按原样传递列表(不尝试将其嵌套在params散列中),并且在Rails中,我手动设置所有属性(@list.name=params[:name]
),我的问题就解决了
我更愿意简单地编写
@list.update_attributes(params[:list])
。这是JavaScript
问题。@MarekLipka这就是为什么我要添加一个JavaScript标记。另外,它与Rails有关,因为我在问如何处理JSON对象?您可以在开发工具或FireBug中显示请求吗?$$。post
来自QuoJS,其行为类似于jQuery的$。post
。我的假设是,它在params
coffeescript对象上没有执行jQuery的$.param()
。list:list
到底是什么样子的?
JSON.stringify(params)
# Parameters: {"0"=>"{", "1"=>"\"", "2"=>"l", "3"=>"i", "4"=>"s", "5"=>"t", "6"=>"\"", "7"=>":", "8"=>"{", "9"=>"\"", "10"=>"n", "11"=>"a", "12"=>"m", "13"=>"e", "14"=>"\"", "15"=>":", "16"=>"\"", "17"=>"m", "18"=>"a", "19"=>"m", "20"=>"a", "21"=>"\"", "22"=>",", "23"=>"\"", "24"=>"p", "25"=>"r", "26"=>"o", "27"=>"g", "28"=>"r", "29"=>"e", "30"=>"s", "31"=>"s", "32"=>"\"", "33"=>":", "34"=>"\"", "35"=>"0", "36"=>"/", "37"=>"0", "38"=>"\"", "39"=>",", "40"=>"\"", "41"=>"p", "42"=>"r", "43"=>"o", "44"=>"g", "45"=>"r", "46"=>"e", "47"=>"s", "48"=>"s", "49"=>"_", "50"=>"b", "51"=>"a", "52"=>"r", "53"=>"\"", "54"=>":", "55"=>"0", "56"=>",", "57"=>"\"", "58"=>"t", "59"=>"h", "60"=>"u", "61"=>"m", "62"=>"b", "63"=>"\"", "64"=>":", "65"=>"\"", "66"=>"d", "67"=>"e", "68"=>"f", "69"=>"a", "70"=>"u", "71"=>"l", "72"=>"t", "73"=>".", "74"=>"j", "75"=>"p", "76"=>"g", "77"=>"\"", "78"=>"}", "79"=>"}"}