使用Rails 3+和资产管道,我的理解是,如果你指定
,资产/ javascripts下的所有javascript文件都会被自动包含并编译成一个js文件require_tree .
在application.js中。
关于处理特定于控制器/视图的javascript的最佳做法是什么?例如,假设我有一个控制器/视图'Houses',我想使用jquery表单验证插件验证house表单,为此我已经将以下代码放在我的houses.js文件中
$(document).ready(function(){
$("#new_house_form").validate();
});
这很好,但问题是,当我访问另一个页面(说/所有者)时,它会尝试验证house表单,并在javascript控制台中收到错误消息。当然,我可以检查当前页面上是否存在表单,然后只调用验证器,但如果我在.ready中有很多控制器特定代码,那对我来说似乎有点不洁净。
我解决此问题的方法是在application.js中创建文件夹assets / javascripts / global
require_tree ./global //instead of require_tree .
并移动除了houses.js之外的所有其他js文件。然后,每当用户访问/ houses / new或/ houses / edit
时,我手动包含houses.js这种做法可以接受吗?如果不是什么被认为是处理这些情况的最佳做法?
答案 0 :(得分:0)
通常我只是让所有j都加载并在调用任何方法之前检查元素是否存在。
$(document).ready(function(){
if($("#new_house_form").length > 0){
$("#new_house_form").validate();
}
});