Ruby on Rails:循环迭代的批量分配?

我得到了质量分配错误。

Can't mass-assign protected attributes: 1, 2, 3, 4, 5, 6, 7 

这些数字代表此循环中的迭代:

    

这是在我的模型中:

 attr_accessible :day, :open_time, :close_time 

我正在尝试创建一个这样的数组:

 "hour"=>{ "1"=>{"day"=>"Sunday","open_time"=>"6","close_time"=>"6"}, "2"=>{"day"=>"Sunday","open_time"=>"6","close_time"=>"6"}, "3"=>{"day"=>"Sunday","open_time"=>"6","close_time"=>"6"} } 

我正在尝试将新行中的每次迭代保存到数据库中

 def create @hour = @hourable.hours.new(params[:hour]) end 

如何修复迭代质量分配? 或者我这样做是错的?

谢谢!

从散列中,Active Record假定’1’,’2’和’3’是模型的列名OR属性,并且由于您没有为访问列指定attr_accessible选项,因此它会抛出mass-assignment error 。 否则,您需要创建一个哈希,如下所示:

 "hour"=>{ "day"=>"Sunday", "open_time"=>"6", "close_time"=>"6"} } 

希望能帮助到你 :)

你的小时属性是

 "hour" => { "1"=>{"day"=>"Sunday", "open_time"=>"6", "close_time"=>"6"}, "2"=>{"day"=>"Sunday", "open_time"=>"6", "close_time"=>"6"}, "3"=>{"day"=>"Sunday", "open_time"=>"6", "close_time"=>"6"} } 

这意味着,您的小时表应具有属性1,2和3。