dimanche 11 novembre 2018

Rails ActionController::ParameterMissing error when creating new record in Ember

Rails 5.2 with fast_jsonapi 1.5, Ember 3.4

I create a new Tag record like this in Ember:

let newTag = this.get('store').createRecord('tag', {
  name: this.get('name')
});
newTag.save();

This sends the following json (as seen in the Network tab of Chrome as the Request Payload):

{"data":{"attributes":{"name":"photos","created_at":null,"updated_at":null},"type":"tags"}}

But Rails only gets (as verified by printing out the params in the create method of the TagsController):

{"controller"=>"tags", "action"=>"create"}

And it throws the following error:

ActionController::ParameterMissing (param is missing or the value is empty: tag)

And here is my controller code:

# app/controllers/tags_controller.rb
class TagsController < ApplicationController
  def create
    tag = Tag.create!(tag_params)
    render json: {status: "success"}
  end

  private

  def tag_params
    puts params
    params.require(:tag).permit(:name)
  end
end

What's the trick to get ember and rails to understand each other? Since ember is sending the "type" in the payload, can I get Rails to understand that this is model and thus fulfill the requirement I've set that "tag" be present in the params?




Aucun commentaire:

Enregistrer un commentaire