Ruby on rails 基于Ajax中的实例变量动态更新页面

Ruby on rails 基于Ajax中的实例变量动态更新页面,ruby-on-rails,ajax,partial,Ruby On Rails,Ajax,Partial,更新:我的问题得到了回答,但我写了一篇博客文章,详细说明了我是如何做到这一点的: 我有一个页面,显示了一个基于Ruby对象的列表。我的目标是调用Ajax来获取一个新的Ruby对象,然后根据这个对象更新列表 我认为这样做的方法是使用partials。我使用代码中的Rails实例变量使整个列表成为一个部分文件。然后,我希望Ajax调用将相应的实例变量设置为新列表,并重新呈现部分 这是最终目标,但现在我正在尝试做一个非常基本的版本,我只是将一个实例变量设置为一个字符串,然后显示该字符串 在我的部门,我

更新:我的问题得到了回答,但我写了一篇博客文章,详细说明了我是如何做到这一点的:

我有一个页面,显示了一个基于Ruby对象的列表。我的目标是调用Ajax来获取一个新的Ruby对象,然后根据这个对象更新列表

我认为这样做的方法是使用partials。我使用代码中的Rails实例变量使整个列表成为一个部分文件。然后,我希望Ajax调用将相应的实例变量设置为新列表,并重新呈现部分

这是最终目标,但现在我正在尝试做一个非常基本的版本,我只是将一个实例变量设置为一个字符串,然后显示该字符串

在我的部门,我有:

<% form_tag :action => :go , :method => :get, :remote => true  do %>
    <%= submit_tag "Go" %>
<% end %>

<div id="test"><%= render(:partial => 'test') %></div>
然后在我的控制器里

def go
    @test = "Hello You"
    render :update do |page|
        page.replace_html "test", :partial => "test"
    end
end
当我运行这个时,我得到:
缺少模板接口/更新,应用程序/更新

我对
render:update
了解不多,我在谷歌上的一个例子中找到了它


我做错了什么导致了这个问题?我如何修复它?我这样做是正确的还是有更好的方法?

我认为在rails 3.1中,
render:update
replace\u html
都被弃用/删除了。进行部分更新的标准方法是使用js.erb模板

在控制器中,告诉您的操作以响应js请求:

@test = "Hello you"
respond_to do |format|
    format.js
end
创建js响应模板app/views/interface/go.js.erb:

$('#test').html("<%= escape_javascript(render('test', test: @test})) %>")
$('#test').html(“”)
并将部分代码更改为
,因为它不再是实例变量;相反,test是作为js.erb模板的参数通过
test:@test

$('#test').html("<%= escape_javascript(render('test', test: @test})) %>")