2017-04-08 3 views
0

nur eine einfache Frage, die ich nicht herausfinden kann. Ich möchte mehrere Filter in rails JsonApiResources anwenden. Hier ist der Ressourcencode, den ich habe.Apply mehrere Filter JSON API Ressourcen

 filters :start_date, :end_date, apply: -> (records, value, _options){ 
     byebug 
     time = ' 00:00:00' 
     _options[:context][:current_company].documents.where('updated_at > ? AND updated_at < ?',value[0]+time,value[1]+time) 
     } 

Dies ist die URL, die ich anrufe.

http://localhost:3000/api/v1/dashboard?utf8=%E2%9C%93&filters%5Bstart_date%5D=2017-01-01&filters%5Bend_date%5D=2017-01-01&%5Bwith_tax%5D=0&commit=Search 

Aber es diesen Code nicht nennen, stattdessen self.records genannt wird. Aber wenn ich den Code ändern, um nur einen Parameter zu unterstützen, sagen wir und ändern filters zu filter im oben genannten Code und der URL, dann wird es gut funktionieren.

Antwort

0

Ich hatte ein Problem mit Filter als auch. Also habe ich zwei separate Filter verwendet, um es stattdessen zu erreichen.

  1. Die URL sollte ein Filterschlüsselwort anstelle von Filtern haben. dh.

    json_api: erhalten, api_tags_path, Filter: { 'start_date': 'Startdatum', 'end_date': 'end-date', }

    http://www.example.com/api?filter[start_date]=start-date&filter[end_dat]=end-date

  2. Und in der Ressourcendatei:

    Filter "start_date" gelten: -> (Aufzeichnungen, den Wert, _options) { records.where ('? updated_at>', Wert [0]) }

    Filter "end_date" gelten: -> (Aufzeichnungen, den Wert, _options) { records.where ('? Updated_at <', Wert [0]) }