Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 创建关联时如何循环强参数_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 创建关联时如何循环强参数

Ruby on rails 创建关联时如何循环强参数,ruby-on-rails,ruby,Ruby On Rails,Ruby,不要与在参数上循环混淆,如何在强参数上循环 我的代码中有很多“移动”部分,但我会坚持这篇文章的标题。我向api发送一个对象数组,如下所示 name:'Foo', 税率组成部分:{ 组件:[{name:'cgm',rate:'2'},{…}] } 在ruby中,tax\u rate有许多tax\u rate\u组件(会计)。传入的将创建一个税率,然后创建其税率组件。这就是工作原理: Rails控制器: #我们假设所有必需的数据都已传递,并且不会抛出错误 def创建 税率=@Organizatio

不要与在参数上循环混淆,如何在强参数上循环

我的代码中有很多“移动”部分,但我会坚持这篇文章的标题。我向api发送一个对象数组,如下所示

name:'Foo',
税率组成部分:{
组件:[{name:'cgm',rate:'2'},{…}]
}
在ruby中,
tax\u rate
有许多
tax\u rate\u组件
(会计)。传入的将创建一个
税率
,然后创建其
税率组件
。这就是工作原理:

Rails控制器:

#我们假设所有必需的数据都已传递,并且不会抛出错误
def创建
税率=@Organization.tax\u rates.build(税率参数)
tax_rate.save将出现在“if”语句中
创建_tax_rate_组件(tax_rate)#我们跳过错误检查
呈现json:tax\u rate,包括:[:tax\u rate\u组件]
结束
私有的
def find_组织
结束
#在这里的某个地方,我需要使用rate_component_参数
def创建税率组件(税率)
组件=参数[:税率\组件][:组件]
components.map do | tc|
tax\u rate.tax\u rate\u components.build(
名称:tc[:name],
费率:tc[:费率]
).保存
结束
结束
定义速率参数
参数要求(:税率)。许可证(:名称)
结束
#我需要用这个
def速率组件参数
参数要求(:税率组件)。允许(
组件:[:名称,:速率]]
)
结束
创建
税率组件时,我需要使用
税率组件参数
,但如何使用?是否有一种干净的方法可以使用强参数创建
税率
及其
税率组件

回顾我所有的辅助项目,我似乎从来没有在循环时使用过强参数方法:(

你就快到了:

def rate_component_params
  params.require(:tax_rate_component).permit(
    components: [:name, :rate]
  )
end
当您传递一个符号数组时,Rails将允许使用这些键进行散列。Rails还有一个内置的方法,可以根据参数创建嵌套记录,即。例如:

class TaxRate < ApplicationRecord
  has_many :tax_rate_components
  accepts_nested_attributes_for :tax_rate_components
end
这样你就可以摆脱整个
create\u tax\u rate\u组件
boondogle

def create
  tax_rate = @organisation.tax_rates.new(rate_params)
  if tax_rate.save
    render json: tax_rate, include: [:tax_rate_components]
  else
    head :unprocessable_entity # or whateveer
  end
end

谢谢。你在
之后漏掉了一个“逗号”:name
tax\u-rate\u-component\u-attributes
应该是
tax\u-rate\u-components\u-attributes
。一切都很好。我似乎永远都不记得嵌套的属性应该如何复数化。。。
def create
  tax_rate = @organisation.tax_rates.new(rate_params)
  if tax_rate.save
    render json: tax_rate, include: [:tax_rate_components]
  else
    head :unprocessable_entity # or whateveer
  end
end