2017-03-27 214 views
0

定製渲染所以基本上我有這對我的索引頁:Ruby on Rails的:在控制器

def index 
    @articles = Article.paginate(:per_page => 15, :page => params[:page]) 
end 

我實現了軟刪除,這基本上是這樣的:有在DB額外的布爾列被稱爲is_active默認爲true。刪除被重寫爲將其更改爲false而不是銷燬,並創建了一個頁面來查看軟刪除的條目。

的問題:目前的解決方法我發現PAGINATE是簡單地在我的index.html.erb添加

<% if article.is_active %> 

。這個缺點是:當我刪除某些東西時,它仍然被分頁考慮,所以我不會說15個條目,我會看到14.更糟糕的是,在取消刪除的頁面上,它顯示了相同數量的空白頁面,適當的頁面(例如,第一個條目最終可能在第14頁而不是1)。這不是嚴重的缺陷,但我想知道我是否可以修復它而不用重寫太多。

也許我可以改變控制器中的東西,所以它不會發送任何在該字段中具有true或false的條目,具體取決於我想要輸出的內容嗎?

回答

2

難道你只是過濾這個領域?

@articles = Article.where(is_active: true).paginate(per_page: 15, page: params[:page]) 
+1

工作就像一個魅力!謝謝!我只是在軌道上得到了紅寶石,但對編程並不全面,所以我懷疑不僅僅是.all或.paginate等,只是不確定如何正確地谷歌。 – user3735111

+0

http://guides.rubyonrails.org/active_record_querying.html本指南是最好的開始,祝你好運 – Iceman

0

您可以使用範圍或where子句只得到積極的文章:

def index 
    @articles = Article.where("is_active = ?", true).paginate(:per_page => 15, :page => params[:page]) 
end