我有一个大的“数据”活动记录对象,其信息我根据用户点击页面的内容进行过滤,然后我将过滤后的数据显示给用户。我想知道放置数据过滤逻辑的最佳位置在哪里。现在我在rails控制器动作中进行过滤,因此在视图中我只需说出类似
的内容<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中有更多的逻辑还有点帮助吗?
感谢您的任何见解!
答案 0 :(得分:1)
你应该把尽可能少的逻辑放到你的视图中...... 如果您通过js过滤数据,该数据将被发送到客户端(产生流量)..所以最好在服务器端进行过滤。
始终只是尝试在视图中显示内容 - 这使您的代码更易于维护。