2011-02-06 19 views
1

我有一個大的「數據」的活動記錄的對象,其信息我基於用戶點擊網頁上的什麼過濾,然後我顯示該過濾後的數據給用戶。我想知道放置數據過濾邏輯的最佳位置在哪裏。現在我在軌道控制器動作中進行過濾,因此在視圖中我只需要說些類似於邏輯在軌道控制器VS在JavaScript(.js.erb)

<script> 
var filtered_data = <%= raw @filtered_data %> 
alert('first piece of data is: '+filtered_data[0]) 
var filtered_names = <%= raw @filtered_names %> 
</script> 

和其他這樣的變量。

,或者我正在考慮只是路過整個@data這樣的:

<script> 
var data = <%= data.to_json.html_safe %> 
var filtered_data = **some js logic to filter data var** 
var filtered_names = **more js logic to filter for names, maybe using the jquery .map function, etc ** 
</script> 

哪種方式獲得更好的性能?我認爲客戶端JS更好,但它可能不是客戶端,因爲它是一個.js.erb?或者在js.erb中有更多的邏輯仍然有點幫助?

感謝您的任何見解!

回答

1

你應該把儘可能少的邏輯放到你的視圖中...... 如果你通過js過濾數據,數據被髮送到客戶端(產生流量)..所以它可能更好地做過濾在服務器端。

總是試圖只是在你的視圖中顯示的東西 - 這使得你的代碼更容易維護。

+0

的事情是,默認的是不是數據在所有的過濾,所以我仍然會發送所有的數據無論如何要在視圖中顯示 – butterywombat 2011-03-03 02:29:29