需要帮助通过ajax调用将javascript哈希发送到rails action

时间:2013-12-05 13:55:27

标签: javascript ajax ruby-on-rails-3

这是我的JS功能,

function checkHash() {

var myHash = {"apples": 3, "oranges": 4, "bananas": 42}

var url = '../../some_contoller/some_action'
var pars = 'myHash=' + encodeURIComponent(myHash)


var myAjax = new Ajax.Request(
  url,
    {
      method: 'get',
      asynchronous: asyncFlag,
      parameters: pars,
      onSuccess: function(transport) {

        //alert(transport.responseText);
        try {
          tax_hash = eval('('+transport.responseText+')');
          //alert("tax_hash = " + tax_hash)
        }
        catch(err){
          return

        }    
     onFailure: function() {
     }

}  }
       )
 }

Rails行动,

def some_action

p params    ##It will print {"myHash"=>"[object Object]"}

结束

我想打印{“苹果”:3,“橘子”:4,“香蕉”:42}

1 个答案:

答案 0 :(得分:0)

首先,在您的AJAX请求结果上使用eval不是一个好主意。将请求解释为JSON(如果你正在使用它的全部内容)要好得多。

以下是有关如何告诉rails返回JSON的信息: http://guides.rubyonrails.org/layouts_and_rendering.html#rendering-json

另外,我建议只返回您感兴趣的参数而不是全部:

def some_action
    render json: params.reject {|k,v| ![:action,:controller, :other_params].include?(k)}
end