如何使用rails remote:true参数和JSON?

Reb*_*ury 13 ajax json ruby-on-rails

在使用rails remote:true参数提交ajax请求时,如何指定要返回JSON对象?一旦返回JSON对象,我如何捕获并使用它?

小智 13

有许多方面,这取决于你的具体情况来回答(例如:你是使用jQuery和UJS适配器),但我要我用自己更好地了解整个过程从一个博士后的东西:我用这个大在很大程度上发布:我会更新我的答案,因为我现在也正在处理这些事情.

您可以将data-type属性添加到DOM元素,如下所示:

<%= link_to "Add a new task", new_project_task_path(@project), "data-type" => "json", :id => "add_task_btn" %>
Run Code Online (Sandbox Code Playgroud)

您还可以在jQuery的全局$ .ajaxSetup()函数中定义默认的dataType.更改所有Ajax请求:

$.ajaxSetup({
      dataType: 'json'
});
Run Code Online (Sandbox Code Playgroud)

第三种方式是在beforeSend回调中:

$(“#add_some_button”).live(“ajax:beforeSend”, function(e, xhr, settings){
        new_data_type = “application/json, text/javascript, */*; q=0.01”;
        xhr.setRequestHeader('accept', new_data_type);
})
Run Code Online (Sandbox Code Playgroud)

(q = 0.01是0和1之间的偏好)

因此,您可以更改dataType属性和HTTP标头以满足您的需求.这里有一个可能的MIME类型列表供参考:这里

和具体的javascript媒体类型列表:这里

从服务器发回的数据格式概述:1.)Ajax发送请求,并将Accept标头设置为所需的MIME类型.2.)Rails Controller检查Accept标头以确定它应该返回什么.3.)Controller将确定该操作是否处理特定的MIME类型.在rails 3中,我们可以使用respond_with,在控制器操作中使用response_to块.

Ajax可以在Rails 3.1中使用的方式概述:

我相信现在首选的方法是使用默认的dataType作为脚本,然后使用js.erb或js.coffee文件处理AJAX请求.

选项:1.)点击事件:插入DOM元素2.)提交通过Ajax 3.一种形式)通过Ajax 4.删除)客户端验证使用Ajax(使用的数据遥控器上的输入字段)5.)添加动态选择(在选择字段上使用数据远程)6.)Ajax分页 - 直接返回HTML. 

我在这里再次提到的是我自己的大纲/评论,要获得详细信息,请查看Andrea Singh 在这里的精彩帖子.