2014-11-03 48 views
2

我正在使用rails 4和嵌套形式和强参数。Rails 4多嵌套形式和强参数

我需要从一种形式更新多个模型。

这是我如何宣布我的强大参数。从父控制器。 该协会是的has_many和belongs_to的顺序Rundatum->材料 - > ParticleSize

def rundatum_params 
    params.require(:rundatum).permit(:material, :company_id, :material_density, :feed_moisture, :date, :building, :machine, :material_weight, :time_mins, :rate_lb_hr, :mill_amps, :class_amps, :mill_liner, :beater_plate_size, :mill_rpm, :class_rpm, :feeder_type, :feeder_setting, :feeder_aug_diameter, :tlgs_set, :air_pressure, :temp_mill_out, :temp_prod_out, :temp_ambient, 

    materials_attributes: [:id, :name, :density, :msds_url, :moisture, :notes, :_destroy], 

    particle_sizes_attributes: [:id, :screen, :percent_through, :percent_retained, :_destroy]) 
end 

从铁轨服务器的输出会是:

Rundatum Load (0.6ms) SELECT "rundata".* FROM "rundata" WHERE "rundata"."id" = $1 LIMIT 1 [["id", 7]] 

Unpermitted parameters: particle_sizes_attributes 

更新时,什么是声明强烈参数的方式一种形式的多个模型?

感谢

回答

3

如果你有嵌套MaterialParticleSize,那么你应该巢的参数以及。

def rundatum_params 
    params.require(:rundatum).permit(:material, :company_id, :material_density, :feed_moisture, :date, :building, :machine, :material_weight, :time_mins, :rate_lb_hr, :mill_amps, :class_amps, :mill_liner, :beater_plate_size, :mill_rpm, :class_rpm, :feeder_type, :feeder_setting, :feeder_aug_diameter, :tlgs_set, :air_pressure, :temp_mill_out, :temp_prod_out, :temp_ambient, 

    { materials_attributes: [:id, :name, :density, :msds_url, :moisture, :notes, :_destroy, 

    { particle_sizes_attributes: [:id, :screen, :percent_through, :percent_retained, :_destroy] }] }) 
end 
+1

我认为这个话题有了答案,明天病检查 - > http://stackoverflow.com/questions/17569999/unpermitted-parameters-for-double-nested-models-in-rails-4? rq = 1 – JerryA 2014-11-04 02:24:48

+0

就是这样!我很惊讶这在互联网上并不容易找到。 uides.rubyonrails.org应该加上这个强有力的参数例子。 – JerryA 2014-11-04 15:48:40