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

前端之家收集整理的这篇文章主要介绍了如何使用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

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

猜你在找的jQuery相关文章