rails控制器中的逻辑与javascript(.js.erb)中的逻辑

时间:2011-02-06 19:03:10

标签: javascript ruby-on-rails ajax jquery

我有一个大的“数据”活动记录对象,其信息我根据用户点击页面的内容进行过滤,然后我将过滤后的数据显示给用户。我想知道放置数据过滤逻辑的最佳位置在哪里。现在我在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中有更多的逻辑还有点帮助吗?

感谢您的任何见解!

1 个答案:

答案 0 :(得分:1)

你应该把尽可能少的逻辑放到你的视图中...... 如果您通过js过滤数据,该数据将被发送到客户端(产生流量)..所以最好在服务器端进行过滤。

始终只是尝试在视图中显示内容 - 这使您的代码更易于维护。