create.js.erb,destroy.js.erb:这些文件如何适合Rails应用程序

时间:2010-09-23 04:34:53

标签: ruby-on-rails ruby-on-rails-3

我无法找到有关create.js.erbdestroy.js.erb如何适合Rails 3应用的文档。

应用程序中这些类型的Javascript文件背后的逻辑是什么?控制器?他们如何以及何时被访问?

3 个答案:

答案 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)) %>");