Javascript 在主干和rails之间共享筛选、排序和验证逻辑

Javascript 在主干和rails之间共享筛选、排序和验证逻辑,javascript,ruby-on-rails,validation,sorting,backbone.js,Javascript,Ruby On Rails,Validation,Sorting,Backbone.js,我发现自己经常不得不在客户端和服务器端重复排序、筛选和验证逻辑。我想让rails服务器端的所有逻辑在主干上复制,这样我就可以执行get请求或客户端筛选,并获得相同的内容。排序和验证也是如此 这可能是一个大问题,所以如果有人知道如何做这些事情,我会非常感激 这里有一个例子来说明我的意思。这是主干过滤器 bySearchTerm: (term) -> return @ if term == '' filtered = @filter((item) -> item.get("

我发现自己经常不得不在客户端和服务器端重复排序、筛选和验证逻辑。我想让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

当涉及到所有的过滤器、排序和验证时,这会失控。切换到节点并使用主干作为服务器端和客户端逻辑是我的答案吗?不确定,什么都可以

我可以建议您研究一下-plugin for Backbone.js,它定义了一些新类型的集合,具有增强的过滤、分页和排序功能


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

非常感谢。这可能不会涵盖所有内容,但肯定会是一个很好的参考。试试看。很高兴它能帮上忙。你们有没有考虑过在服务器端执行js?我也面临同样的问题,我找到了一种通过php中的节点引擎执行js的方法。另一个解决方案是将存储排序和验证构建为json,并在服务器端和客户端使用不同的paraer以相同的方式解释json。