我无法找到有关create.js.erb
和destroy.js.erb
如何适合Rails 3应用的文档。
应用程序中这些类型的Javascript文件背后的逻辑是什么?控制器?他们如何以及何时被访问?
答案 0 :(得分:2)
例如,当您通过XMLHttpRequest访问您的操作时,您的操作将使用javascript文件进行响应。
在您的控制器中:
class MyController < ApplicationController
respond_to :html, :js
def show
@my_model = MyModel.find(params[:id])
respond_with @my_model
end
end
当通过html访问时,show动作将响应html视图,当通过XMLHttpRequest访问时,将使用je js视图。
答案 1 :(得分:2)
文件扩展名与Mime类型相关联。检查我的回答here。它是为Rails 2.2.2编写的,但同样的逻辑仍然存在。请注意,Rails 3中的respond_to
语法已更改
此外,这些文件不在app/controllers
中,而在app/views/<controller_name>/
答案 2 :(得分:1)
基本上那些是响应ajax调用而呈现的视图。当您执行正常请求时,然后控制器将varaialbes传递给您的视图,即。 create.html.erb。如果对控制器执行Ajax调用,则控制器将渲染create.js.erb。
主要区别在于,在create.html.erb中,您应该拥有网页的完整模板。如果是create.js.erb,您应该有一个可以修改视图的JavaScript代码。
例如:
$('#comments-box').html("<%= escape_javascript(index_comments(@commentable, @comments)) %>");
$('#comments-box-spinner').hide();
$('#flash').html("<%= escape_javascript(render(:partial => 'layouts/flash', :collection => flash)) %>");