在骨干网和rails之间共享过滤器,排序和验证逻辑

时间:2014-12-12 20:06:20

标签: javascript ruby-on-rails validation sorting backbone.js

我发现自己经常不得不在客户端和服务器端重复排序,过滤和验证逻辑。我想在我的rails服务器端将所有这些逻辑复制到主干上,这样我就可以执行get请求或客户端过滤器并获得相同的东西。排序和验证也是如此。

这可能是一个很大的问题,所以如果有人知道如何做这些,我会非常感激。

这是我的意思的一个例子。这是主干过滤器

bySearchTerm: (term) ->
  return @ if term == ''

  filtered = @filter((item) ->
  item.get("name").toLowerCase().indexOf(term.toLowerCase()) > -1 or item.get("number").toString().toLowerCase().indexOf(term.toLowerCase()) > -1
)
  new Evue.Collections.Customers(filtered)

但后来我需要在服务器端复制它,这样有人可以做一个get请求并得到相同的过滤结果。

unless params[:search_term].blank?
  @customers = @customers.where("lower(name) LIKE ? or number LIKE ?", "%#{params[:search_term].downcase}%", "%#{params[:search_term].downcase}%")
end

当涉及到所有过滤器,排序和验证时,这会失控。切换到节点并使用骨干服务器和客户端逻辑我的答案?不确定,对任何事都开放。

1 个答案:

答案 0 :(得分:1)

我建议你研究一下Backbone.js的backbone.paginator - 插件,它定义了一些带有增强过滤,分页和排序的新类型集合。

我喜欢所谓{mode: "client"}的方法(这有助于避免复制)。