如何解析JSON以在Rails视图中显示?

时间:2013-08-08 21:08:38

标签: jquery ruby-on-rails json parsing

我只是尝试使用Google API进行快速货币转换,并使用jQuery或Rails方法在rails视图中显示“rate”信息。

返回的JSON采用以下格式:

{"to": "EUR", "rate": 0.74928817599999997, "from": "USD"}

到目前为止,我已尝试过如下的jQuery Ajax请求:

$(document).ready(function(){
$.getJSON('http://rate-exchange.appspot.com/currency?from=USD&to=EUR', function(data) {
  var items = [];

  $.each(data, function(key, val) {
    items.push('<li id="' + key + '">' + val + '</li>');
  });

  $('<ul/>', {
    'class': 'my-new-list',
    html: items.join('')
  }).appendTo('#exchange');
});
});

我实际上并不需要items数组或无序列表。我刚刚从jQuery文档中复制了大部分内容,以确保它应该正常工作。

我将非常感谢您对此代码的任何帮助,或者是否有更好的Rails方式来实现相同的功能。

2 个答案:

答案 0 :(得分:0)

如果您可以从服务器中的rails(而不是浏览器中的javascript)查询Google API,那么请使用

 @result=JSON.parse(response_body_as_string)

@result将是一个Ruby哈希对象,您可以根据需要在Rails视图中使用它。

如果您打算从服务器发送到Google API,最好将其作为后台作业,并将结果保存到数据库中一小时。

答案 1 :(得分:0)

如果您想在客户端上执行此操作,可以使用jsonp发出请求(不允许通过不同主机的JavaScript进行正常的HTTP请求):

$.ajax({
  type: "GET",
  url: "http://rate-exchange.appspot.com/currency?from=USD&to=EUR",
  dataType: "jsonp",
  success: function(data) {
    $('#yourId').html(data.rate); // populate the HTML element with id 'yourId' with the rate
  }
});