我的应用程序结构如下所示
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中时,一切正常。但我不希望在我的应用程序中有冗余脚本。如何重新考虑这一因素?
答案 0 :(得分:1)
你是对的,因为复制代码不是一个好主意。至于你在哪里放置javascript文件的问题,它并不重要(尽管通常情况下,由于超出问题范围的原因,它们位于app/assets/javascripts
)。
重要的是,您实际上已经定义了从new.js.haml
调用的javascript函数,这意味着必须加载javascript文件。这可以通过在您的布局中包含javascript文件来完成,如下所示:
<%= javascript_include_tag "admin/admin" %>
在主javascript文件中定义函数:
// admin.js
var testFunc = function() {
console.log('this is a test!')
};
然后调用new.js文件中的函数:
// new.js
testFunc();
无需重新定义您的函数或变量。