Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 将JSON从jQuery发布到Rails 4应用程序并另存为会话变量_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 4 将JSON从jQuery发布到Rails 4应用程序并另存为会话变量

Ruby on rails 4 将JSON从jQuery发布到Rails 4应用程序并另存为会话变量,ruby-on-rails-4,Ruby On Rails 4,我试图弄清楚如何通过post将JSON从jQuery发送到Rails应用程序,并将JSON数据保存为会话变量。以下是我到目前为止的情况: jQuery代码 info = '{"data": {"color": "green"}}' $.ajax({ type: "POST", url: '/cart/save-design', data: info, cache: false, success: function(data){ alert("OK"); },

我试图弄清楚如何通过post将JSON从jQuery发送到Rails应用程序,并将JSON数据保存为会话变量。以下是我到目前为止的情况:

jQuery代码

info = '{"data": {"color": "green"}}'

$.ajax({
  type: "POST",
  url: '/cart/save-design',
  data: info,
  cache: false,
  success: function(data){
    alert("OK");
  },
  error: function(){
  }
});
def save_design
    data = json_params
    session[:check] = data
    head :no_content
end

private

def json_params
    params.require(:data).permit(:color)
end
轨道控制器代码

info = '{"data": {"color": "green"}}'

$.ajax({
  type: "POST",
  url: '/cart/save-design',
  data: info,
  cache: false,
  success: function(data){
    alert("OK");
  },
  error: function(){
  }
});
def save_design
    data = json_params
    session[:check] = data
    head :no_content
end

private

def json_params
    params.require(:data).permit(:color)
end
服务器错误日志

Started POST "/cart/save-design" for 127.0.0.1 at 2015-09-03 12:52:37 -0700
Processing by CartsController#save_design as */*
Parameters: {"{\"data\": {\"color\": \"green\"}}"=>nil, "locale"=>"en"}
MOPED: 127.0.0.1:27017 QUERY        database=abc_development collection=sessions selector={"$query"=>{"_id"=>"Lroqq29V1QVt7ebIM5ENwFeN0FM"}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 batch_size=nil fields=nil runtime: 0.6210ms
Completed 400 Bad Request in 7ms

ActionController::ParameterMissing (param is missing or the value is empty: data):
app/controllers/carts_controller.rb:47:in `json_params'
app/controllers/carts_controller.rb:30:in `save_design'

问题似乎出在我的强悍的情妇身上,但我不明白为什么

数据类型:“json”
添加到AJAX调用中:

$.ajax({
  type: "POST",
  url: '/cart/save-design',
  data: info,
  dataType: 'json',
  cache: false,
  success: function(data){
    alert("OK");
  },
  error: function(){
  }
});

并确保
info
是有效的JavaScript对象,而不是普通字符串。

有效。不需要数据类型:“json”,但需要有效的对象。我看到过一个在发布之前将json对象字符串化的示例,这就是我的问题。非常感谢。