Javascript 用主干和轨道实现星型偏好系统

Javascript 用主干和轨道实现星型偏好系统,javascript,ruby-on-rails,ruby-on-rails-3,backbone.js,coffeescript,Javascript,Ruby On Rails,Ruby On Rails 3,Backbone.js,Coffeescript,我正在尝试向我正在构建的应用程序添加偏好 基本设置涉及具有概念集合的用户。他们可以通过提交文本字段向集合中提出新概念 用户也可以通过点击一颗小星星来选择最喜欢的概念,就像你在Gmail或其他一百万个应用程序中所做的那样。喜爱的概念应贴在概念集合的顶部,使新创建的概念显示在其下方 要喜欢某个概念,我必须将该概念的id发布到/favorites 我的问题是如何在客户端管理受欢迎和不受欢迎的概念 我应该有两个独立的集合,一个用于偏好的概念,另一个用于非偏好的概念,还是应该尝试坚持一个集合 如果我在最喜

我正在尝试向我正在构建的应用程序添加偏好

基本设置涉及具有概念集合的用户。他们可以通过提交文本字段向集合中提出新概念

用户也可以通过点击一颗小星星来选择最喜欢的概念,就像你在Gmail或其他一百万个应用程序中所做的那样。喜爱的概念应贴在概念集合的顶部,使新创建的概念显示在其下方

要喜欢某个概念,我必须将该概念的id发布到/favorites

我的问题是如何在客户端管理受欢迎和不受欢迎的概念

我应该有两个独立的集合,一个用于偏好的概念,另一个用于非偏好的概念,还是应该尝试坚持一个集合

如果我在最喜欢的概念集合中有一个概念模型

class FavouritedConcepts extends Backbone.Collection
  url: "/favourited_concetpts"
  model: Concept
然后,我可以通过该集合列出概念,因为Favorited_conceptsindex将概念范围仅限于那些受欢迎的概念是很自然的

但是,概念由位于/concepts的ConceptsController销毁,如果我尝试调用位于FavoritedConcepts集合中的概念的主干模型.destroy,则它将错误地向/FavoritedConcepts发送删除请求

解决方案可能是只保留一个概念集合,将最喜欢的布尔属性混合到每个概念上,并定义一个比较器以强制最喜欢的概念保留在列表的顶部。但是,我觉得这样做会使视图层失去一些灵活性。我无法拥有侦听来自FavoritedConceps集合的事件的视图


实现此功能时,最好的方法是什么?

我会选择一个带有布尔标志的集合作为首选。这将为您节省所有家务,以确保集合之间的状态正确


您仍然可以在绑定到来自Concepts的事件的视图中实现侦听器,您只需要执行Concepts.Favorite签入回调。

这就是我最终选择执行的操作。
class FavouritedConcepts extends Backbone.Collection
  url: "/favourited_concetpts"
  model: Concept