Rails 3:简单的AJAXy页面更新?

Ed *_*nes 13 jquery ruby-on-rails rjs

我不敢相信我这个简单的任务已经花了四个小时,但我有.

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

渲染:更新do | page | page.replace_html"div_id",:partial =>"new_content",...结束

在Rails 3中,Ryan Bates让我编写了全新的javascript函数,从Prototype(rails默认)切换到jQuery,否则就不能享受生活.其他的tutes不再那么简单.

我错过了什么?我们如何取代<div>这些日子?

Ed *_*nes 12

多谢你们.官方的答案似乎是,是的,团队觉得简单是善的敌人,使其变得更加复杂.

第一个关键是为方法调用ajax更新创建一个.js.erb文件NAMED.因此,如果索引方法处理更新,请将原始javascript放入index.js.erb.这将在views文件夹中.

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

m = $('list_users');    
m.innerHTML = "<%= escape_javascript(render :partial => "reload_users") %>";
Run Code Online (Sandbox Code Playgroud)

然后进行调用,添加控制器方法的respond_to块,添加:

format.js
Run Code Online (Sandbox Code Playgroud)

最后,调用视图具有:

<%= link_to "Update User List", @reload_users_path, :remote => true %>
Run Code Online (Sandbox Code Playgroud)

顺便说一句,page.replace如果你安装了一个插件,据说所有旧的页面都可以使用.插件下载页面表明它在Rails 3的最新版本中已经破坏并且尚未修复.此外,如果您使用它,各种博客将来到您的家和桦树切换你.


rob*_*rit 1

你那里还有 jQuery 吗?任何一天我都会推荐它而不是原型......

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

$.get("<%= url_for path/to/partial %>",
      function(response) {
        $("#div_id").html(response);
      });
Run Code Online (Sandbox Code Playgroud)

这通过 AJAX 获取部分内容并将其转储到 ID 为 div_id 的 div 中。

希望这可以帮助!