2012-02-05 30 views
9

Tôi muốn viết dữ liệu như JSON với bộ điều khiểnLàm thế nào để đăng một mảng trong Rails

trong javascript, dữ liệu là một mảng, ví dụ, a = [1,2]

sau đó tôi POST, nói số

$.post('user/data', {'data' : a}) 

trong bộ điều khiển người dùng, tôi lấy dữ liệu từ thông số.

Tuy nhiên, khi tôi lấy params [: dữ liệu], tôi nhận được một băm:

{"0"=>1, "1"=>2} 

thay vì sau đó một mảng!

vì vậy tôi phải chuyển đổi băm thành một mảng theo cách thủ công.

Có phương pháp chuyển mảng chính xác cho bộ điều khiển không?

+1

có thể trùng lặp: http://stackoverflow.com/questions/6410810/rails-not-decoding-json -from-jquery-đúng-array-trở thành-một-băm-với-intege –

+0

nếu sử dụng 'a.map (&: id)' nếu a là tập hợp các đối tượng? –

+0

@ldiqual: điều đó tốt! cảm ơn bạn!! – HanXu

Trả lời

1

Bạn sẽ phải chuyển đổi JSON để một chuỗi, nhưng điều này sẽ làm việc:

/path/to/url?data[]=1&data[]=2&data[]=3

Và trong bộ điều khiển, làm điều gì đó như:

params[:data].each_with_index do |data, index| 
    do_something_with_data 
end 
2

Tôi đã có một tương tự vấn đề gần đây. Sửa lỗi của tôi là gửi nội dung json thay vì mã hóa biểu mẫu mặc định.

tôi đã sử dụng

$.ajax(
{ 
    type: "POST", 
    url: url, 
    data: JSON.stringify(data), 
    dataType: "json", 
    contentType: 'application/json' 
} 
); 

Trong ví dụ của bạn này có thể được thực hiện như:

$.ajax(
     { 
     type: "POST", 
     url: 'user/data', 
     data: JSON.stringify({'data' : a}), 
     dataType: "json", 
     contentType: 'application/json' 
     } 
    ); 
Các vấn đề liên quan