我试图在Rails 5应用程序中的两个模型之间定义一个has_and_belongs_to_many
关联(仅在某些情况下才使用api)。模型分别为bags
和products
,并且关联可以从控制台按预期方式工作-我可以键入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
有人在这里看到我在做什么错吗?预先感谢!
编辑:我认为问题一定与数据的发送方式有关,但我仍然无法弄清楚。
答案 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