如何在关联has_and_belongs_to_many中将数据发布到rails后端?

时间:2018-01-22 10:18:35

标签: ruby-on-rails associations ruby-on-rails-5 postman

如下 我用两个表创建了一个关联。

我在控制台添加的数据是:

Deal.create(items: "items1", shop_id:1, customer_ids: "uuid")

这是成功的。

但是当我尝试使用邮递员进行测试时

{"shop_id": 1, "items": "items2", "customer_ids": "uuid"}

新数据客户为null

我的控制器:

def create
    @deal = Deal.new(deal_params)

    respond_to do |format|
      if @deal.save
        format.json { render :show, status: :created }
      else
        format.json { render json: @deal.errors, status: :unprocessable_entity }
      end
    end
  end
def deal_params
    params.require(:deal).permit(:items, :shop_id, :customer_ids)
end

我的路线:

post 'deals', to: 'deals#create'

未发生日志错误。

我的情况有什么问题?

更新

我直接在控制器上尝试相同的数据

@deal = Deal.new({"shop_id": 1, "items": "items2", "customer_ids": "uuid"})

它成功了......

所以我认为问题出在我的deal_params函数

我尝试了教程

params.require(:deal).permit(:items, :shop_id, :customer_ids => [])

但仍然没有好处

3 个答案:

答案 0 :(得分:1)

因为您在允许其他人之前放置params.require(:deal)仅在:deal下使用参数。所以输入数据必须是

{"deal": {"shop_id": 1, "items": "items2", "customer_ids": "uuid"}}

或者您可以尝试直接允许其他值,如

params.permit(:items, :shop_id, :customer_ids => [])

答案 1 :(得分:0)

{"deal" => {"shop_id" => 1, "items" => "items2", "customer_ids" => "uuid"}}
控制器中的

私有操作需要deal,因此您需要将数据作为哈希值发送到deal的包装器

params.require(:deal).permit(:items, :shop_id, :customer_ids)

答案 2 :(得分:0)

试试这个:

params.require(:deal).permit(:items, :shop_id, customer_ids: [])
你在做什么样的关系?有很多变化?有很多?有一个吗?