我正在尝试替换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
方法中初始化它吗?
我看过的每一个资源似乎都表明它会起作用。有什么想法吗?
答案 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)) %>");