向服务器端搜索/ rest api实现ember请求的最佳方法

时间:2014-10-16 12:08:59

标签: ruby-on-rails ruby ember.js

我有Ransack(https://github.com/activerecord-hackery/ransack)搜索的Ruby on Rails后端。 我如何实现过滤器。在服务器端进行搜索非常重要 我知道这可以使用查询参数来完成,例如:

@store.find('order', queryParams)

但是通过遵循这条路径,我必须在控制器的queryParams列表中添加所有模型的字段并添加到路由中:

queryParams: {
  <field>: {
    refreshModel: true
  }
  ....
}

但我不喜欢这个解决方案

1 个答案:

答案 0 :(得分:0)

我没有使用过ember,但是我有类似的设置:使用ransack搜索模型,我的请求是通过来自KendoUI客户端的GET / POST ajax请求发送的。

这是我通过GET的典型搜索字符串 http://server.com/products/search.json?q[vendor_number_start]=122191 (在这种情况下,它会返回两个产品" where vendor_number LIKE '122191%' "

当我进行POST(来自Chrome开发者控制台)

时,我的请求是如何显示的
params: {utf8:✓, authenticity_token:SENSORED,…}
action: "search"
authenticity_token: "SENSORED"
commit: "Details"
controller: "products"
q: {vendor_number_eq:90802491}
vendor_number_eq: "90802491"
utf8: "✓"

以下是来自我的控制器的代码,它接收带有参数的请求并调用搜索

@q = Product.ransack(params[:q])
@products = @q.result().order(params[:order]).page(params[:page]).per(params[:per])

我用kaminari做分页 - 这就是页面&amp;每个parmas来自。