15 ajax 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 );
}
});
Run Code Online (Sandbox Code Playgroud)
我的控制器大致如下:
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
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误.
而评估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:in'(解析DELEGATION:2:)中__send__'
(__DELEGATION__):2:in解析'/ 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上?
小智 7
设置contentType对我来说不起作用.我得到一个字符串而不是params [:page]的哈希.
所以我解决了这个问题:
使用在JavaScript中的JSON中找到的脚本对JSON对象进行字符串化:
$.ajax({
type: "PUT",
url: '/admin/pages/1.json',
data: { page : JSON.strigify( {...} ) },
dataType: 'json',
success: function(msg) {
alert( "Data Saved: " + msg );
}
});
Run Code Online (Sandbox Code Playgroud)
在Ruby on Rails方面,必须要有JSON gem.在控制器中:
params[:page] = JSON.parse params[:page] if params[:page].is_a? String
Run Code Online (Sandbox Code Playgroud)
它根本不漂亮,但它对我有用.
| 归档时间: |
|
| 查看次数: |
15922 次 |
| 最近记录: |