如何使用jQuery将JSON数据转换为Ruby on Rails?

我正在尝试发送一个如下所示的jQuery Ajax PUT请求:
$.ajax({
      type: "PUT",url: '/admin/pages/1.json',data: { page : {...} },dataType: 'json',success: function(msg) {
        alert( "Data Saved: " + msg );
      }
});

我的控制器大致如下:

respond_to do |format|
         if @page.update_attributes params[:page]
           format.html{ ... }
           format.json{ render :json => {:saved => 'ok'}.to_json }
         else
           format.html{ ... }
           format.json{ render :json => {:saved => 'fail'}.to_json }
         end
       end

但是我收到以下错误.

评估nil.name时发生错误
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/xml_mini/rexml.rb:29:in merge_element!’
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/xml_mini/rexml.rb:18:inparse”
(DELEGATION):2:在__send__’
(__DELEGATION __):2:inparse”
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.2/lib/active_support/core_ext/hash/conversions.rb:154:in`from_xml’

就像Ruby on Rails正在尝试将参数解析为XML,但是我想使用JSON!

将JSON放在Ruby on Rails上我该怎么办?

解决方法

设置contentType不适用于我.我得到一个字符串,而不是params [:page]的哈希.

所以我这样解决了:

使用JavaScript中的JSON脚本在JavaScript中对JSON对象进行字符串化:

$.ajax({
    type: "PUT",data: { page : JSON.strigify( {...} ) },success: function(msg) {
        alert( "Data Saved: " + msg );
    }
});

在Ruby on Rails方面,必须需要一个JSON gem.在控制器中:

params[:page] = JSON.parse params[:page] if params[:page].is_a? String

它不是很漂亮,但它对我有用.

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: <span id=&quot...
jQuery 添加水印 <script src="../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...