我有一系列对象,我通过controller
发送到ajax
。
我的ajax请求是这样的:
$.ajax({
data: {
product: [{'name': 'ahmad', 'price': 'tench', 'quantity': '12'}, {'name': 'gulshan', 'price': 'tench', 'quantity': '12'}]
},
url: '',
type: "POST",
dataType: "json",
success: function ( data ) {
console.log(data);
// this.setState({ comments: data });
}.bind(this)
});
控制器:
def create
@product = Product.new(product_params)
if @product.save
render json: @product
else
render json: @product.errors, status: :unprocessable_entity
end
end
private
def product_params
params.fetch(:product).permit!
end
但如果我使用create
方法,那么我也会遇到同样的错误。
我在rails日志中附上参数的屏幕截图。
我不明白为什么我会收到此错误?
请帮忙。
答案 0 :(得分:1)
你遇到的问题是,由于你传递了一个products
数组,你的Rails强大的参数无法确定要传递的属性。
强对手期望:
params: {
product: {
"name" => "Test"
}
}
这样,当你require(:product).permit(:name)
时,强params模块会根据需要切片哈希。因为你的哈希看起来如下,所以它遇到了一个问题:
params: {
product: [
{"name" => "test"},
{"name" => "test2"}
]
}
-
可能值得关注nested values:
params.permit(:product => [{:name, :price, :quantity}])
答案 1 :(得分:0)
所以我尝试了很多东西,但直到现在都没有做任何事情。
product_arr = []
product_params.each_pair { |key, product| product_arr << product }
@products = Product.create(product_arr)
each_pair
以键和值返回响应。