.js.erb VS .js

2024-05-08

将 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(使用前将#替换为@)

.js.erb VS .js 的相关文章