我的一个视图中有一个html.erb文件。该文件非常大,有大约2/3的javascript代码和1/3 html。我不喜欢这个文件太乱了。 javascript部分主要是事件处理程序和jquery UI组件的使用,如日期选择器,对话框等,用于页面中相应的html元素。我想将javascript部分与html部分分开。
我可以将javascript移动到单独的js.erb文件中并像部分文件一样使用吗?这有什么好处?
当我使用像I18n。()和<%= form_authenticity_token%>这样的rails API时,如何将javascript移动到静态.js文件。我应该每次都将它们传递给包装javascript函数吗?有更好的方法吗?
如果我将javascript移出html.erb文件会有助于缓存/渲染html.erb页面吗?
有兴趣了解是否有任何可重复使用的模式
html.erb文件中的示例代码:
<% content_for :javascript do %>
<script type="text/javascript">
$(document).ready(function()
{
$('#create_segment_dialog').dialog({
title: "<%= I18n.t("segment.create_segment_title") %>",
// lots of javascript
}
</script>
<%end %>
//HTML starts here
<div id="right-column">
答案 0 :(得分:3)
我的2c,但我知道对此有不同意见:
尝试将尽可能多的JS代码分离到一个或多个函数中,并将它们放入资产管道中的JS文件中。利用此举将您的JS分解为可供其他方法/控制器使用的可重用组件。
这意味着您可以获得移动到那里的JS的资产管道的所有好处:
缺点?正如您所指出的,任何Rails变量都必须作为参数传递给函数。
将JavaScript移动到.js.erb partial是一个选项,但如果此代码非常特定于特定方法或控制器,那么它不一定会改善DRYness - 它可以通过分离使代码更具可读性HTML和JS。