将 Rails 应用程序的 javascript 放入 .js.erb 文件而不只是将其放入 application.js 文件有什么好处?我有一个企业创建按钮,因此我应该将代码放入 create.js.erb 文件中,还是使用以下方法将其放入我的 application.js 中:
$("#business_submit").click(function() {}
除此之外,我有我的创建按钮
$('.error').hide();
$("#business_submit").click(function() {
// validate and process form here
$('.error').hide();
var name = $("input#business_name").val();
if (name == "" || name == "Required Field") {
$('#namelabel').show()
$("#business_name").focus();
return false;
}
var address = $("#business_address").val();
if (address == "" || address == "Required Field") {
$('#addresslabel').show();
$("#business_address").focus();
return false;
}
var city = $("#business_city").val();
if (city == "" || city == "Required Field") {
$('#citylabel').show();
$('#business_city').focus();
return false;
}
var state = $("#business_state").val();
if (state == "" || state == "Required Field") {
$('#statelabel').show();
$("#business_state").focus();
return false;
}
var zip = $("#business_zip").val();
if (zip == "" || zip == "Required Field") {
$('#ziplabel').show();
$("#business_zip").focus();
return false;
}
var phone = $("#business_phone").val();
if (phone == "" || phone == "Required Field") {
$('#phonelabel').show();
$("#business_phone").focus();
return false;
}
var category = $("#business_business_category_id").val();
if (category == " - Choose one - ") {
$('#categorylabel').show();
$("#business_business_category_id").focus();
return false;
}
$("#new_business")[0].reset();
$("#new_business").toggle();
return false;
});
这在我的 .js 文件中效果很好,但是当我单击“创建”时,它实际上并没有将他们在表单中键入的信息发送到数据库。所以我尝试将代码复制粘贴到 .js.erb 文件中。现在,当我单击“创建”时,表单已提交到数据库,但一半的 JavaScript 无法正常工作。 $('.error').hide();并没有隐藏我的错误,无论如何它们都会出现。 $("#new_business")[0].reset();没有重置我的表单,并且当我单击“创建”时没有验证检查。因此,我要么有一个功能齐全但不提交的表单,要么有一个已提交但实际上不起作用的表单。我应该尝试哪一项来开始工作?
我看到很多带有 $.ajax 的代码,但我一辈子都无法弄清楚。我尝试了一会儿,然后开始在轨道中遇到一些伪造保护错误,这是一个完全不同的问题。
.js.erb
文件用于控制器操作,例如创建,当您希望在操作完成时执行 javascript 时。例如,当您想通过 ajax 提交表单并希望在一切完成后显示警报时,您可以将
$('#business_submit').click(...)
在您的 application.js 或 *.html.erb 中,您的 create.js.erb 可能如下所示:
alert('New object id: ' + <%= new_object.id %>);
这样,返回到浏览器的 JavaScript 可以首先由 Erb 呈现,允许您插入自定义字符串/变量/等,就像在 .html.erb 模板中一样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)