problem: passing post parameters to a controller

Hi, I have a problem passing parameters via post.
I've examined the log file of a scaffolded version against my AJAX
version and can't figure out what's wrong. I think I've also isolated
the problem to be parameter passing by using logger.debug.

the AJAX part;
var name=document.getElementById("name").value;
var notes=document.getElementById("notes").value;
var parent_nid=document.getElementById("parent_nid").value;
var
post_params="name="+name+"&notes="+notes+"&parent_nid="+parent_nid+"&authenticity_token="+window._token;

var req=XMLHttpRequest();
req.open("POST","/categories/create",true);
req.setRequestHeader("Content-type","application/x-www-form-urlencoded");
req.send(post_params);

The controller part: (mostly from scaffold)
@category=Category.new(params[:category])
logger.debug "name:"
logger.debug @category.name
logger.debug "notes:"
logger.debug @category.notes
logger.debug "parent_nid:"
logger.debug @category.parent_nid
Category.create(@category)
redirect_to :controller=>'dashboard'

the log part:
Parameters: {"name"=>"abc",
"authenticity_token"=>"d8c79e2216df723f373a9170fa364f9a3c147092",
"notes"=>"abcde", "parent_nid"=>"0"}

name:

notes:

parent_nid:

Hi, I have a problem passing parameters via post.

post_params="name="+name+"&notes="+notes+"&parent_nid="+parent_nid+"&authenticity_token="+window._token;

...

the log part:
Parameters: {"name"=>"abc",
"authenticity_token"=>"d8c79e2216df723f373a9170fa364f9a3c147092",
"notes"=>"abcde", "parent_nid"=>"0"}

The parameters aren't nested properly, you want.

{ "category" => {"name"=>"abc", "notes" => "abcde", "parent_nid" => "0"},
   "authenticity_token"=>"d8c79e2216df723f373a9170fa364f9a3c147092"
}

I also suspect that the parent_nid attribute of category probably
should be parent_id (based on convention assuming that
a category belongs_to :parent)

So I think you want something like this javascript:

post_params="category[name]="+name+"&category[notes]="+notes+"&category[parent_id]="+parent_nid+"&authenticity_token="+window._token;

HTH

That did it!

Thank you very much Rick!!