这是一个我无法弄清楚的简单问题。我想在rails JsonApiResources
中应用多个过滤器。这是我的资源代码。
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)
}
这是我打电话的网址。
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
但它不会调用此代码,而是调用self.records
。但是,如果我将代码更改为仅支持一个参数,请在上面的代码和网址中说:start_date
并将filters
更改为filter
,而不是它可以正常工作。
答案 0 :(得分:0)
我也遇到了过滤器的问题。因此,我使用了两个单独的过滤器来实现它。
网址应该包含filter关键字而不是过滤器。即
json_api:get,api_tags_path,filter:{ &#39; start_date&#39;:&#39;开始日期&#39; , &#39; end_date&#39;:&#39;结束日期&#39;, }
http://www.example.com/api?filter[start_date]=start-date&filter[end_dat]=end-date
在资源文件中:
过滤&#34; start_date&#34;,申请: - &gt; (记录,值,_options){ records.where(&#39; updated_at&gt;?&#39;,value [0]) }
过滤&#34; end_date&#34;,申请: - &gt; (记录,值,_options){ records.where(&#39; updated_at&lt;?&#39;,value [0]) }