0

我的应用程序结构如下所示

myapp
  app/assets/javascripts/admin/admin.js
  app/controllers/admin/admin_controller.rb
  app/views/admin/new.html.haml
  app/views/admin/new.js.haml

我正在使用一些 ajax 函数来呈现我的表单中的特定内容。new.js.haml调用js格式时触发的指定动作。我的admin.js文件中还有其他一些脚本,这些脚本在此 ajax 调用之后不包括在内。当我将脚本复制并粘贴到 new.js.haml 中时,一切正常。但我不想在我的应用程序中有多余的脚本。如何重新考虑这个?

4

1 回答 1

1

您是正确的,因为复制代码不是一个好主意。至于您将 javascript 文件放在哪里的问题,这并不重要(尽管通常,由于您的问题范围之外的原因,它们位于app/assets/javascripts)。

重要的是您调用的 javascript 函数new.js.haml实际上已经定义,这意味着必须加载 javascript 文件。这可以通过在布局中包含 javascript 文件来完成,如下所示:

<%= javascript_include_tag "admin/admin" %>

在主 javascript 文件中定义函数:

// admin.js

var testFunc = function() {
  console.log('this is a test!')
};

然后在 new.js 文件中调用该函数:

// new.js

testFunc();

无需重新定义您的函数或变量。

于 2013-03-27T09:20:28.597 回答