Rails 4. PSQL 9.3。在Heroku上主持。我将我的数组发送到angularJS。
在我的heroku服务器上,我检查我的日志,确实params作为一个数组发送。此外,我可以确认它正在路由到正确的update
路由。这是heroku日志:
INFO -- : Parameters: {"profile"=>{"order"=>[0, 1, 2, 3, 4]}, "id"=>"123"}
尽管正确发送了参数,但Rails不会将此数组保存在我的activerecord中。为什么呢?
整数数组是通过db migration
add_column :profiles, :order, :integer, array: true
我的更新路线是这样的:
def update
@profile = Profile.find(params[:id])
if @profile.update(profile_params)
render json: @profile
else
render 'failed to update'
end
end
我将profile_params定义为:
def profile_params
params.require(:profile).permit(...some other variables, :order)
end
所有非常标准的东西,所以我不知道我做错了什么
在前端使用angularJS我有以下内容:
var params = {
profile:{
order: [0,1,2,4]
}
}
$http.put("http://my_server_url/123", params)
.success(function(data,status,headers,config){
console.log(data)
})
知道我在这里做错了吗?
编辑:弄清楚出了什么问题,仍然需要帮助
所以经过一些测试后我发现当我检查profile_params时它是空的。为什么在发送数组时它是空的?
答案 0 :(得分:0)
通过以下链接查看问题:http://jaketrent.com/post/permit-array-rails-strong-parameters/
基本上你需要以不同的方式允许数组。它需要被允许这样:
params.require(:model).permit(:other_field_1,:other_field_2,... my_array_field:[])