views:

86

answers:

2

I'm using the jQuery plugin jQuery-Tokenizing-Autocomplete in a rails application with a has_many association.

I need to save the values to the database, but to do that I need it to be a string, not an array. So the result should equal "1","2","3". Hope this clarifies.

The javascript used to generate this array:

$.TokenList.ParseValue = function (value, settings) {
  var result = [];
  $.each(value, function(i, node) {
    if (node) {
      result.push(node.id);
    }
  });
  return result;  
};
A: 

The default separator for join is the comma, so remove the '","' argument. You are specifying a separator of "," so the double quotes must be escaped in the result string, hence the backslashes.

Fred
That leaves me with "hotel_ids"=>["1,2,3"] and not the ["1","2","3"] that rails require.
Amund
Why not split the array into an array of separate strings back in the controller? Something like hotel_ids[0].split(',')
Fred
$ irb>> a = ["1,2,3"]=> ["1,2,3"]>> a[0].split(',')=> ["1", "2", "3"]>>
Fred
Great idea, would you happen to know the best way to make the array a string? the split method makes it an array. So the end result is [["1","2","3"]]. Thanks!
Amund
If you have an array or arrays, use the flatten method.[["1","2","3"]].flatten yields ["1","2","3"]
Fred
A: 
var string = '"' + array.join('","') + '"'; // "1","2","3"
Casey Hope
That works, except for the it getting escaped: "1\",\"2\",\"3"
Amund