我正在从 嵌套表单
发出 POST
请求,该表单是用 reactjs
编写的,因此它正在发出 ajax
请求创建
产品 Controller
的方法。
react 代码:
我在 getInitialState
中有一个空对象,就像这样
getInitialState: function() {
return {
products: [{name: '', price: '', quantity: ''}],
count: 1
};
},
当我提交表单时,
handleSubmit: function(e) {
e.preventDefault();
var productsArray = this.state.products;
$.ajax({
data: {
product: productsArray
},
url: '',
type: "POST",
dataType: "json",
success: function ( data ) {
console.log(data);
// this.setState({ comments: data });
}.bind(this)
});
},
对象被填充,parameter
散列变成这样
Parameters: {"product"=>{"0"=>{"name"=>"", "price"=>"", "quantity"=>""}}, "shop_id"=>"gulshop"}
所以我得到了
ActiveRecord::UnknownAttributeError (unknown attribute '0' for Product.):
我怎样才能得到这样的参数
散列:
Parameters: {"product"=>[{"name"=>"", "price"=>"", "quantity"=>""}], "shop_id"=>"gulshop"}
可以为它做些什么?
最佳答案
您的原始错误“产品的未知属性‘0’。”是因为 Product 类没有属性“0”。我不确定“0”是从哪里来的,因为您还没有发布发出请求的 react 代码。
您可以使用 jQuery 的 .ajax 方法轻松地从您的组件发出请求。例如
$.ajax({
type: 'POST',
url: '/your_url',
data: {
course: {
name: 'Hello World',
price: 120
}
}
});
然后你会在你的 Controller 中有类似下面的东西..
class ProductController < ApplicationController
def create
@product = Product.create(product_params)
end
private
def product_params
params.require(:product).permit(:name, :price)
end
end
关于ruby-on-rails - 如何从嵌套表单发送参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34833475/