Ruby on rails Rails3:简单的AJAXy页面更新?

Ruby on rails Rails3:简单的AJAXy页面更新?,ruby-on-rails,jquery,rjs,Ruby On Rails,Jquery,Rjs,我不敢相信我已经为这个简单的任务找了四个小时,但我已经找到了 在Rails 2.3中,我可以用以下简单代码替换页面的一部分: 渲染:更新do |页面| page.replace_html“div_id”,:partial=>“new_content”,。。。 结束 在Rails 3中,Ryan Bates让我编写全新的javascript函数,从Prototype(Rails默认值)切换到jQuery,否则就无法享受生活。其他的图坦卡蒙也不那么直截了当 我错过了什么?这些天我们如何替换一个?你那

我不敢相信我已经为这个简单的任务找了四个小时,但我已经找到了

在Rails 2.3中,我可以用以下简单代码替换页面的一部分:

渲染:更新do |页面| page.replace_html“div_id”,:partial=>“new_content”,。。。 结束

在Rails 3中,Ryan Bates让我编写全新的javascript函数,从Prototype(Rails默认值)切换到jQuery,否则就无法享受生活。其他的图坦卡蒙也不那么直截了当


我错过了什么?这些天我们如何替换一个

你那里还有jQuery吗?我推荐它胜过任何一天的原型

如果它仍然存在,您可以在Javascript中使用以下内容:

$.get("<%= url_for path/to/partial %>",
      function(response) {
        $("#div_id").html(response);
      });
$.get(“,
功能(响应){
$(“#div_id”).html(回复);
});
这将通过AJAX获取部分内容,并将其转储到id为div\u id的div中


希望这有帮助

我甚至不确定是否需要通过AJAX调用来加载该部分。我相信在js.erb文件中,调用render(:partial=>object\u或\u path)只会返回一个包含所有html的字符串,您可以将其包装在jQuery对象中并附加。例如:

$('#div_id').html($('<%= render :partial => @object %>'))
$('#div_id').html($('@object%>'))

整个RJS东西使javascript内联,使dom非常突出。另外,通过避免内联javascript,您可以通过压缩缓存浏览器中的这些文件来打开优化javascript的其他可能方法。这就是RJS超出Rails3范围的原因。用jQuery或Prototype进行一天的小交流,应该可以让您了解这些小东西,并从长远来看对项目有所帮助

谢谢,伙计们。官方的答案似乎是,是的,团队觉得简单是好的敌人,这让事情变得更复杂

第一个关键是创建一个以调用ajax更新的方法命名的.js.erb文件。因此,如果index方法处理更新,则将原始javascript放入
index.js.erb
中。这将放在“视图”文件夹中

其次,index.js.erb中的代码是

m = $('list_users');    
m.innerHTML = "<%= escape_javascript(render :partial => "reload_users") %>";
最后,调用视图具有:

<%= link_to "Update User List", @reload_users_path, :remote => true %>
true%>
顺便说一句,如果你安装了插件,所有使用
page.replace
的旧页面都可以使用。插件下载页面显示,它在Rails 3的最新版本中出现故障,尚未修复。此外,各种博主会来到您的家中,如果您使用它,birch会切换您。

尝试以下方法:

page.call "$('#div_id').html", render(:partial => 'new_content')

据我所知,按照上面的答案,您可以在模板中执行以下操作:

<%= link_to "Update User List", @reload_users_path, :remote => true %>
通过这种方式,您可以让控制器“执行”客户端JS,这与使用render:update进行的操作非常相似。这相当于在Rails 2中执行以下操作:

render :update do |page|
   page << "alert('reloaded')"
end
render:updatedo |页面|

页面否,只是暂时尝试更新到Rails 3,今天不想学习jQuery.:-)html看起来很简单,也很有效。该死,好吧!不幸的是,我已经很久没有使用RJ或Prototype了,以至于忘记了如何使用它们!我不知道为什么一些rails开发人员会这么想。html是“内联javascript”。RPC(远程过程调用)是一种可靠的设计模式。他们只需要将后端转换为RPC客户端/服务器消息传递服务,并使客户端API库不可知。
respond_to do |format|
  format.js {
    render :text => "alert('reloaded')"
  }
end
render :update do |page|
   page << "alert('reloaded')"
end