我有一个包含三个模型的嵌套表单vehiclevehicle_key_feature并且与vehicle_detailwherevehicle_key_featurevehi,ruby-on-rails,nested-forms"/>

首页 > 解决方案 > # 未定义的方法 `with_indifferent_access'

我有一个包含三个模型的嵌套表单vehiclevehicle_key_feature并且与vehicle_detailwherevehicle_key_featurevehi

问题描述

我有一个包含三个模型的嵌套表单vehiclevehicle_key_feature并且与vehicle_detailwherevehicle_key_featurevehicle_detail具有一对一的关系vehicle。当我按照以下方式使用强参数时,它工作正常 -

params.require(:vehicle).permit(:title, vehicle_key_feature_attributes: [:android_auto], vehicle_detail_attributes: [:tech_specs])

因为我对所有三个模型都有很多强大的参数,所以我想将嵌套的属性参数保存在一个单独的方法中,并将它们与vehicle_params 合并。但它向我显示以下错误

未定义的方法with_indifferent_access' for #Array

我已经编写了以下代码库,我检查了控制台和 params.inspect,这是预期的形式。

  def vehicle_params
    params.require(:vehicle).permit(
      :title, :category_id, :make, :model, :model_number, :mileage, :exterior, :interior, :transmission, :engine_type, :drivetrain, :fuel_efficiency, :engine, :condition, :description, :dealer_id          
    )
    .merge(vehicle_key_feature_attributes)
    .merge(vehicle_detail_attributes)   
  end

  def vehicle_key_feature_attributes
    {
      vehicle_key_feature_attributes: [
        :android_auto, :apple_carplay, :backup_camera, :blind_spot_monitor, :bluetooth,   
        :forward_collision_warning, :interior_accents, :keyless_entry, :side_impact_air_bags
      ]
    }
  end

  def vehicle_detail_attributes
    {
      vehicle_detail_attributes: [ 
        :exterior, :interior, :entertainment, :mechanical, :safety, :tech_specs, :details
      ]
    }    
  end

在两种不同的方法中提取这两个嵌套属性的最佳解决方案是什么?


大数据php的循环问题

我有 txt 文件中的 id 列表,我用于while循环,它适用于少量 id,但 5k id 需要 5 分钟才能完成,我得到echo了 3 次我认为 apache2.conf 的问题是否有任何设置原因?

简单的例子

$data= fopen( "list.txt", "r");
$a= 0;
$b= 0;

while( !feof( $data)) {
    $id = fgets( $data);
    $ok =  // Do something
    if($ok == false ){
        $a++;
    }else{
        $b++;
    }
}

echo "$a - $b";

对不起,我的英语不好

标签: ruby-on-railsnested-forms

解决方案


您的第二个片段正在做其他事情。要复制第一个所做的,请将您的哈希添加到允许的参数列表中。

params.require(:vehicle).permit(:title, ..., vehicle_key_feature_attributes.merge(vehicle_detail_attributes))

推荐阅读