我的视图文件夹中有一个名为create.js.erb
的js文件。当我尝试创建一个记录时,它应该被调用,但是它没有被调用。我无法弄清楚为什么,并且说实话,甚至不知道我的应用程序如何调用视图文件夹中的js文件,因此我不确定要在此处粘贴哪些代码来帮助调试问题。
有人可以向我解释一下如何执行视图文件夹中的js,以及何时我想在我的视图文件夹中而不是在资产管道中放置一个js文件?
答案 0 :(得分:1)
*。在您的控制器操作中使用AJAX / JS时会呈现js.erb文件。默认情况下,当您调用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
希望有所帮助,如果您需要更多帮助,请发布您的控制器和任何视图文件的代码......