0

這樣我就可以從數據庫中獲取一個集合,使用此代碼顯示它:一個過濾收集Backbone.js的

var articles = new SimpleGoogleReader.Collections.Articles(); 
articles.fetch({ 
    success: function(articles){ 
    var view = new SimpleGoogleReader.Views.ArticlesIndex({model: articles}); 
    view.render(); 
    } 

}); 

和它工作得很好。

在我的Rails模型中(切換到rails的秒)我有一個發佈模型和一個文章模型。每個出版物都有很多文章,每篇文章都屬於一個出版物。另外,每篇文章都有一個publication_id列。

Back to Backbone。現在我想要從Backbone獲取我的文章集合,但只獲取具有指定發佈ID的文章。這裏是我有:

articles_by_id: function(id){ 
    var articles = new SimpleGoogleReader.Collections.Articles(); 
    articles.fetch({ 
     data: {publication_id: id}, 
     success: function(x){ 
     console.log(x); 
     } 
    }); 
    } 

這仍然讓我所有的文章,而不是我正在尋找的過濾版本。 目前,我只是想將數據打印到控制檯,看看我是否得到了正確的數據。我將稍後處理渲染視圖。

任何想法?

回答

0

正如Kyle提到的,您需要確保您的Rails「API」圖層支持將publication_id作爲參數。您可以通過修改您的config/routes文件或通過檢查Rails操作中是否存在publication_id來做到這一點。

例如,你可能有這樣的事情:

class ArticlesController < ApplicationController 
    def index 
    @articles = Article.all 
    end 
end 

只是修改成:

class ArticlesController < ApplicationController 
    def index 
    if params[:publication_id] 
     @articles = Article.where(:publication_id => params[:publication_id]).all 
    else 
     @articles = Article.all 
    end 
    end 
end 

這是不地道的,通常你只會套用where的條件相似到這裏的答案How to add conditional where clauses in rails但它適用於這種情況。

+0

你們是對的!而你剛剛幫我結束了一整天的兔子洞:) – user2623706

0

您的API是否允許過濾?傳遞數據選項將簡單地將它們添加到請求中,例如,您的請求將如下所示。

http://www.yourdomain.com/articles?publication_id=id

但是,您可以獲取所有這些,然後篩選您的收藏客戶端。

articles_by_id: function(id){ 
    var articles = new SimpleGoogleReader.Collections.Articles(); 
    articles.fetch({ 
     success: function(x){ 
     console.log(x.where({publication_id: id})); 
     } 
    }); 
    } 
+0

我將如何去從客戶端過濾集合?我一直在玩過濾器和下劃線庫函數,但沒有成功。我可能會錯誤地使用它們。有任何想法嗎? – user2623706

+0

@ user2623706上面的代碼片段應該包含'console.log'過濾後的集合,根據您想要過濾集合的方式更改您傳遞給哪個屬性的位置。 –