2017-07-29 69 views
0

我傳遞一個JSON到我的控制器創建方法。我試圖將這個JSON傳入我的模型/數據庫。但我不斷收到錯誤:發佈JSON到模型

When assigning attributes, you must pass a hash as an argument. 

我沒有通過哈希?

JSON:

{ 
    "people": [ 
    { 
     "name": "Tom", 
     "sport": "Ski", 
     "mood": "Happy", 
     }, 
    { 
     "name": "Robbie", 
     "sport": "Swim", 
     "mood": "sad", 
     }, 
    { 
     "name": "Ted", 
     "sport": "Running", 
     "mood": "Sleepy", 
     }, 
    ] 
} 

控制器:

class PeopleController < ApplicationController 
    respond_to :json 
    def create 
    new_record = people_params 
    records = People.new(new_record) 
    records.save 
    end 

    private 

    def people_params 
    params.permit(people: [:name, :sport, :mood]).require(:people) 
    end 
end 

架構:

create_table "people", force: :cascade do |t| 
    t.string "name" 
    t.string "sport" 
    t.string "mood" 
    end 

回答

1

在ActiveRecord的,所述new方法不帶散列的陣列,只是一個單一的一個。而create確實允許散列數組,以創建多個模型。

所以,你只需要改變

new_record = people_params 
records = People.new(new_record) 
records.save 

records = People.create(people_params) 

如果任何無效的,沒有人會被保存,或者您可以使用create!引發錯誤如果有任何無效