HABTM关联中不允许的参数

时间:2019-07-17 13:50:39

标签: ruby-on-rails has-and-belongs-to-many

我试图在Rails 5应用程序中的两个模型之间定义一个has_and_belongs_to_many关联(仅在某些情况下才使用api)。模型分别为bagsproducts,并且关联可以从控制台按预期方式工作-我可以键入Bag.last.update(product_ids: [1,2,5])并创建关联。但是,当尝试通过API控制器发送数据时,我得到了Unpermitted parameter: :product_ids

我已经阅读了所有其他可以找到的答案,并尝试实现这些解决方案,但是我无法使其正常工作。这是相关的代码。让我知道是否还有其他帮助。

bag.rb

class Bag < ApplicationRecord
  has_and_belongs_to_many :products
end
product.rb

class Product < ApplicationRecord
  has_and_belongs_to_many :bags
end
bags_controller.rb

def bag_params
        params.require(:bag).permit(:param1,
                                    :param2,
                                    :param3,
                                    :param4,
                                    product_ids: [])
end

这是服务器输出:

Processing by Api::V1::BagsController#update as JSON
  Parameters: {"bag"=>{"product_ids"=>"[1,2]"}, "id"=>"3"}
  User Load (1.7ms)  ...
  Bag Load (1.4ms)  ...
  CACHE User Load (0.2ms)...
  ...
Unpermitted parameter: :product_ids

有人在这里看到我在做什么错吗?预先感谢!

编辑:我认为问题一定与数据的发送方式有关,但我仍然无法弄清楚。

1 个答案:

答案 0 :(得分:1)

感谢您的确认,瓦西莉莎!我似乎无法让前端发送实际的数组,所以我最终将bag_params更改为该数组,如果发送了一个简单的逗号分隔的字符串,则可以正常工作

attrs = params.require(:bag).permit(:appointment_id,
                                    :recipient_name,
                                    :package_id,
                                    :price,
                                    :product_ids)

attrs.merge!(product_ids: params[:bag][:product_ids].split(","))
attrs