【问题标题】:Share filter, sort, and validation logic between backbone and rails在主干和 Rails 之间共享过滤器、排序和验证逻辑
【发布时间】:2015-02-11 14:48:55
【问题描述】:

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

这可能是一个大问题,所以如果有人知道如何做这些,我将不胜感激。

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

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

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

【问题讨论】:

  • 你考虑过在服务器端执行 js 吗?我面临同样的问题,我找到了一种通过 php 节点引擎执行 js 的方法。另一种解决方案是将存储排序和验证构建为 json,并在服务器端和客户端以相同的方式解释 json 的不同参数。

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


【解决方案1】:

我可以建议您查看backbone.paginator - Backbone.js 的插件,它定义了一些具有增强过滤、分页、排序的新集合类型。

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

【讨论】:

  • 非常感谢。这可能无法涵盖所有​​内容,但绝对是一个很好的参考。
  • 当然。试试吧。很高兴它有帮助。
猜你喜欢
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 2016-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多