Rails 3.1:如何在ajax js响应中访问“page”(JavaScriptGenerator)

时间:2012-01-05 11:56:06

标签: ajax ruby-on-rails-3.1

我正在尝试替换rails应用的当前页面上的一些HTML。

我有:remote => true的按钮,并且在我的line_items_controller #create方法的respond_to块中有format.js

respond_to do |format|
    if @line_item.save
        format.html { redirect_to store_url }
        format.js
        format.json { render json: @line_item, status: :created, location: @line_item }
    else
        format.html { render action: "new" }
        format.json { render json: @line_item.errors, status: :unprocessable_entity }
    end
end

我创建了一个文件app/views/line_items/create.js.erb,其中包含以下行:

<%= page.replace_html('cart', render(@cart)) %>

然而,当我点击按钮并查看chromes版本的firebug从服务器返回的内容时,我得到了:

NameError in Line_items#create

Showing /home/hamstar/Development/railsbook/depot/app/views/line_items/create.js.erb where line #1 raised:

undefined local variable or method `page' for #<#<Class:0x007f08583aea50>:0x007f085839acd0>
Extracted source (around line #1):

1: <%= page.replace_html('cart', render(@cart)) %>

那么页面对象是JavaScriptGenerator吗?如何在create.js.erb文件中访问该对象?我需要在#create方法中初始化它吗?

我看过的每一个资源似乎都表明它会起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

RJS消失了:http://techoctave.com/c7/posts/49-rails-3-1-and-the-jquery-effect

所以我猜JavascriptGenerator页面是一个属于RJS的原型生成器。

另请参阅:Rails 3.1 vs 3.0 AJAX syntax difference. Equivalent statement in jQuery?

现在必须使用它:

$('#cart').html("<%= escape_javascript(render(@cart)) %>");