我知道这是可能的旧的原型和远程=>真正
但是使用Rails 3.1和jQuery(和资产)我不知道该怎么做。@H_403_4@
任何人都可以帮助或告诉我教程的方式吗?@H_403_4@
解决方法
> ajax:beforeSend – 发送之前发送
> ajax:成功 – 发送后发送,包含响应
> ajax:成功事件结束后完成
> ajax:当出现错误时发生错误@H_403_4@
所有你需要做的就是编写一个函数(你在$ document.ready中包装),这个函数反过来会将一些匿名函数绑定到这些事件中,或者只是你感兴趣的事件。@H_403_4@
例如,假设您有一个div,您要将响应数据放入一个id为“response_data”,并且您的链接的ID为“ajax_trigger”。这样的事情@H_403_4@
<%= link_to "My Link",some_model_path(@model_instance),:remote => true,:html => {:id => "ajax_trigger"} %> <div id="response_data"> </div>
所有你需要做的是提供一个类似下面的功能,以便将服务器的响应放入div:@H_403_4@
$(document).ready( function(){ $("a#ajax_trigger").bind("ajax:success",function(evt,data,status,xhr){ //this assumes the action returns an HTML snippet $("div#response_data").html(data); }).bind("ajax:error",xhr){ //do something with the error here $("div#errors p").text(data); }); });
真的,您正在使用的所有JavaScript都是在从服务器返回时处理响应。您不需要特别处理启动XHR请求,您也可以将该方法安全地存储在作为静态资源的.js文件中。如果您使用的是Rails 3.1,则应将其放在与控制器对应的适当命名的javascript文件中。在控制器中,您需要确保指定:layout =>在respond_with()方法中为false,控制器只返回其呈现的部分或模板,而不是完整的页面。此设置还适用于返回JavaScript以由客户端执行的操作以及JSON,具体取决于您在请求中指定的数据类型。@H_403_4@
我发现这个博客文章是非常有帮助的:
http://www.alfajango.com/blog/rails-3-remote-links-and-forms/@H_403_4@