javascript - 将控件和事件绑定(bind)到rails中的JS文件

标签 javascript jquery ruby-on-rails

这是一个新的蜜蜂问题。

所以在 Rails 中我们有一个名为 Student 的模型。为此,创建 Controller 和 View 文件,并创建一个名为 Student.js 的 JS 文件,并将其包含在 application.js 中。

如果我想在学生索引页面上绑定(bind) JS 事件,那么我当前正在做的就是在我的 index.html.erb 文件的底部放置一个脚本标记,上面写着

$(document).ready(function() {
    students();
}

然后在student.js 文件中我编写了一个名为student() 的函数,在其中绑定(bind)索引页面上的所有事件。

我想知道这是否是正确的方法。由于 Student.js 文件包含在 application.js 中并且可用 - 我是否应该无法直接调用事件,甚至不将它们放入 Student() 函数并从索引页调用 Student() 函数。所以这方面的一个例子是 -

假设我希望需要提交我的学生姓名。因此,在该控件模糊时,我想显示一个警报,要求用户填写它。只是作为一个例子 - 我知道这是一个坏例子 - 哈哈。

目前我正在这样做

///Student.js 文件

function student(){ 
    var name_control = $("#student_name")

    name_control.blur(function() {
    if (name_control.val() === ''){
        alert("name cannot be blank");
    }
 })
}

但是在student.js 文件中我应该无法直接执行此操作 -

//Student.js 文件

var name_control = $("#student_name")

name_control.blur(function() {
    if (name_control.val() === ''){
      alert("name cannot be left blank")
    } 
})

我的问题是 - 为什么我们需要从 Rails 页面的 document.ready() 调用 Student() 函数。我是否以错误的方式处理它,是否有更好的方法来做到这一点。或者我们是否必须按照我当前的方式调用 Student() 函数。

谢谢

最佳答案

也许您应该将文档就绪代码放入student.js 文件中。因此,您可以执行以下操作,而不是在该文件中使用名为 Student() 的函数:

$(document).ready(function() {
var name_control = $("#student_name")

name_control.blur(function() {
if (name_control.val() === ''){
         alert("name cannot be left blank")
     } 
  })
}

这意味着您的index.html.erb 文件中没有包含代码的脚本标记

关于javascript - 将控件和事件绑定(bind)到rails中的JS文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40269520/

相关文章:

java - 新的 Chrome 更新阻止了 Java;在调用我的小程序代码之前,我如何才能等到获得许可?

javascript - Javascript 类中的 XMLHttpRequest

Jquery 工具覆盖在 IE7 中不起作用

ruby-on-rails - Errno::ENOENT:没有这样的文件或目录 config/settings.yml (heroku 部署)

javascript - 为什么选项不显示? (jqueryui 自动完成)

javascript - 如何在另一个原型(prototype)函数中调用原型(prototype)函数而不丢失上下文

javascript - 根据数组中的元素更新对象

javascript - 如何使用 JavaScript/jQuery 仅刷新 PHP 头文件?

ruby-on-rails - 使用 Mongoid 从数据库延迟下载字段,或处理大型文档

mysql - rake 中止 : db:schema:dump