ruby-on-rails - 如何从嵌套表单发送参数?

标签 ruby-on-rails arrays ruby reactjs

我正在从 嵌套表单 发出 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/

相关文章:

ruby-on-rails - 未定义的方法 'accept' 为 nil :NilClass after upgrading to Rails 3

java - 从 CSV 文件自动创建数组时,索引 1 超出长度 1 的范围错误

ruby-on-rails - 频繁出现 Gem RemoteFetcher::FetchError。任何解决方法?

Ruby - 地理编码 api 响应速度不够快

ruby - ruby 表达式 "%.1f"是什么?它如何舍入小数?

ruby-on-rails - Rubymine pg安装错误

ruby-on-rails - 如何在 Ruby 中为新添加的模型生成 sorbet.rbi 文件?

ruby-on-rails - Rails simple_form 元素与数据-...刺激属性?

javascript - 谁能教我下面给出的JS代码?

arrays - 向下转换数组长度和索引