vendredi 16 septembre 2016

EmberJS 2.7, Rails 5, AMS 0.10.2 - GET resources collection where fieldX=[B or C]

I have an EmberJS filter like this:

/app/routes/trails/new.js

  model: function (filterCurrentEmployees) {
    return Ember.RSVP.hash({
      trail: this.store.createRecord('trail'),
      employees: this.store.query('employee', { status: '1,2'}).then(
         function(data) {return data})
    })
  },

I was hoping that status: '1,2' would end up as a normal Rails param so I could do params[:status] and then filter the returned employees (you know so the db would get a query like 'where status IN ['1','2']')

But when this filter query is sent to Rails API I get this error:

ActiveModelSerializers::Adapter::JsonApi::Deserialization::InvalidDocument (Invalid payload ({:data=>"Expected hash"}): {"status"=>"1,2", "controller"=>"employees", "action"=>"index"}):

which occurs here in the controller:

api/app/controllers/employees.rb

def employee_params
  ActiveModelSerializers::Deserialization.jsonapi_parse!(params)
end

but that is needed for AMS to work with Ember.

So I presume something is wrong with the way I am sending/creating the filter in EmberJS?

It seems to be trying to make a GET collection request. Not sure really and this explains sort-of what is going on at the Rails end, but I don't know how to get Ember to create the filter properly so that AMS is happy to accept it.




Aucun commentaire:

Enregistrer un commentaire