Создание коллекции вложенных ресурсов в ревах
Я пытаюсь создать новые объекты с коллекцией вложенных ресурсов. Когда я отправляю мой JSON, я получаю:
ActiveRecord::AssociationTypeMismatch: FormLabel(#70306552439440) expected, got Hash(#70306480154920)
Вот мой код:
# form.rb
class Form < ActiveRecord::Base
has_many :form_labels
validates_presence_of :name
end
# form_label.rb
class FormLabel < ActiveRecord::Base
belongs_to :form
validates_presence_of :form
validates_presence_of :text
end
# form_representer.rb
module FormRepresenter
include Roar::JSON
property :id
property :name
collection :form_labels
end
# form_label_representer.rb
module FormLabelRepresenter
include Roar::JSON
property :text
end
# form_controller.rb
class FormsController < ApplicationController
include Roar::Rails::ControllerAdditions
def create
form = Form.new
consume!(form)
respond_with(form)
end
Когда я отлаживаю, это параметры:
0> params
=> {"name"=>"Address", "form_labels"=>[{"text"=>"foo"}], "format"=>"json", "controller"=>"forms", "action"=>"create", "form"=>{"name"=>"Address"}}
и ошибка:
ActiveRecord::AssociationTypeMismatch: FormLabel(#70237358584300) expected, got Hash(#70237286721880)
1 ответ
Ошибка в строке:
collection :form_labels
Это должно быть:
collection :form_labels, decorator: FormLabelRepresenter, class: FormLabel