create.js.erb
我的视图文件夹中有一个名为的 js 文件。当我尝试创建记录时应该调用它,但它没有被调用。我不知道为什么,老实说,我什至不知道我的应用程序如何调用视图文件夹中的 js 文件,所以我不确定在此处粘贴什么代码来帮助调试问题。
谁能向我解释视图文件夹中的 js 是如何执行的,以及何时我想将 js 文件放在我的视图文件夹中而不是资产管道中?
create.js.erb
我的视图文件夹中有一个名为的 js 文件。当我尝试创建记录时应该调用它,但它没有被调用。我不知道为什么,老实说,我什至不知道我的应用程序如何调用视图文件夹中的 js 文件,所以我不确定在此处粘贴什么代码来帮助调试问题。
谁能向我解释视图文件夹中的 js 是如何执行的,以及何时我想将 js 文件放在我的视图文件夹中而不是资产管道中?
*.js.erb 文件在您将 AJAX/JS 与控制器操作一起使用时呈现。默认情况下,当您调用 create 方法时,Rails 将使用 HTML 响应。这将加载一个新页面。有时您想改用 AJAX,这就是您在视图文件夹中创建 js.erb 文件的原因。
为此,您使用的表单和/或 link_to 对象必须启用 AJAX(它们应该有一个:remote => true
属性)如果它们没有被指定为远程表单,它们将执行 HTML 而不是 JS 和 create。 js.erb 文件永远不会被调用。
你的控制器方法还需要知道如何响应 js 请求。你需要类似的东西:
respond_to do |format|
format.js
end
该代码告诉 Rails 在您的视图文件夹中查找名为“method”.js.erb 的文件,因此在本例中为 create.js.erb。
这些文件与您放在资产管道中的常规 JS 文件完全不同——这些是作为控制器操作的结果呈现的视图模板。
您可能会发现一些 Rails/AJAX 教程很有帮助……这里有一个很好的教程可以引导您完成整个过程:
http://net.tutsplus.com/tutorials/javascript-ajax/using-unobtrusive-javascript-and-ajax-with-rails-3
希望对您有所帮助,如果您需要更多帮助,请发布您的控制器和任何视图文件的代码...