【问题标题】:Which place is best to put my JavaScript in ROR哪个地方最好将我的 JavaScript 放入 ROR
【发布时间】:2013-03-17 07:38:27
【问题描述】:
我的应用结构是这样的
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 中时,一切正常。但我不想在我的应用程序中有多余的脚本。如何重新考虑这个?
【问题讨论】:
标签:
javascript
ruby-on-rails
ruby-on-rails-3
assets
actionview
【解决方案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();
无需重新定义您的函数或变量。