在轨道4的控制器,thing_params.delete(:东西)不删除:东西键值对
问题描述:
在控制器我有以下:在轨道4的控制器,thing_params.delete(:东西)不删除:东西键值对
# app/controllers/things_controller.rb
def create
kind = thing_params.delete(:kind)
detail_attributes = thing_params.delete(:detail_attributes)
@detail = Detail.create(kind, detail_attributes)
@thing = current_user.things.build(thing_params)
...
end
private
def thing_params
params.require(:thing).permit(
:name,
:position,
:kind,
{ detail_attributes: [ :detail_category_id, ... ] },
end
两个kind
和detail_attributes
在被正确地设置create
方法的前两行。但是,thing_params.delete(:kind)
不会从thing_params
散列中删除“kind”键值对。与:detail_attributes
一样。
我该怎么做才能将它们从thing_params
中删除?
答
当你打电话给thing_params
时,你从params
得到一堆东西的副本。然后,您从该副本中删除:detail_attributes
。然后,您再次致电thing_params
以获得另一份新的副本。你应该做的更是这样的:
clean_params = thing_params
detail_attributes = clean_params.delete(:detail_attributes)
#...
@thing = current_user.things.build(clean_params)
这样,你将只工作的清理params
一个副本,而不是两个。
当然!谢谢。 – robertwbradford