2017-02-10 53 views
0

的意見/冥想/ _count.html.erb@ meditations.count工作文件夾內,但不是在其他地方局部使用

<p><small><%= @meditations.count %></small></p> 

當我嘗試使用該主頁上,像這樣:

<%= render partial: "/meditations/count" %> 

我得到的錯誤:

undefined method `count' for nil:NilClass 

我試圖改變呼叫:

<%= render partial: "/meditations/count", object: @meditations %> 

我終於得到了我想要的東西,但我想我違反了這樣的主頁上某種規律:

<p><%= Meditations.count %> </p> 

我應該這樣做,以獲得部分工作?

回答

0

I get the error:

undefined method `count' for nil:NilClass

看到不確定的任何時候____的零級IT爲B/C,你正在呼籲,你認爲具有價值的東西等等,但零。換句話說,@mediatations即將作爲零。

所以檢查你的控制器。在匹配此頁面的方法中,確保您有類似@meditations = Meditation.all的內容。

最後,是的 - Meditations.count是從視圖調用數據庫。非常不好的做法。基本上打破了MVC。

+0

很好,謝謝。有沒有另外一種方法可以做到這一點,例如在主頁上的調用中聲明變量? (它正在工作,所以我不打算改變它,只是有興趣知道另一種方式,在修改目標控制器以放置局部變量之前,我從來沒有看到過指令。是否因爲它是一個調用而不是參數? –

+0

MVC的方法是在你的控制器中建立所有的變量,視圖應該儘可能的愚蠢(沒有邏輯或者調用),控制器用於業務邏輯和繁重的工作。模型用於訪問數據庫 一旦掌握了上述內容,就可以查看Fat Model/Skinny Controller流程,它基本上意味着在控制器中使用一堆邏輯並將其提取到模型中普通的舊Ruby對象夾 – aspencer8111

相關問題