Tôi có một mẫu .js.erb và tôi đang làm:làm thế nào tôi có thể chuyển đổi cấu trúc dữ liệu ruby thành cấu trúc dữ liệu javascript bằng .js.erb?
var foo = <%= [1,2,3] %>;
var foo2 = <%= [1,2,3].to_json %>;
var foo3 = <%= ["bar"].to_json %>;
var foo4 = <%= {:foo => "bar"}.to_json %>;
foo bằng 123
foo2 bằng [1,2,3]
foo3 là undefined (vì trình duyệt than phiền về lỗi phân tích cú pháp)
foo4 không xác định (vì trình duyệt than phiền lỗi phân tích cú pháp)
Cách duy nhất tôi có thể tìm ra cách để có được foo3 làm việc đã làm:
var foo3 = "<%= ['bar'].to_json %>"; # foo3 => "["bar"]"
foo3.replace(/"/g, "\"")) # => "['bar']" <-- looks like eval should work...
eval(foo3.replace(/"/g, "\""))[0]; # => "bar" ... it works
tôi không thể foo4 để làm việc theo cách này ... Tôi đã cố gắng thực hiện:
var foo4 = <%= "{:foo => 'bar'}.to_json" %>; # foo4 => "{"foo:":"bar"}" %>;
foo4.replace(/"/g, "\"")); # => "{"foo":"bar"}" <-- looks like eval should work
eval(foo4.replace(/"/g, "\"")); # => "Parse error" <-- but it doesn't...
Tóm lại, tất cả điều này cần phải sử dụng công cụ đánh giá là vô lý-- có PHẢI là một cách tốt hơn! Ai đó có thể vui lòng khai sáng cho tôi xem nó là gì không?!?!
foo.to_json là đúng cách. Vui lòng cho chúng tôi biết foo.to_json đang được chuyển đổi thành nguồn js nào. –
Nếu tôi làm var foo = <% = [1,2,3] .to_json%>, nó hoạt động .. Kiểm tra foo hiển thị một mảng js [1,2,3] ... nhưng nếu tôi làm var foo = [ "a", "b", "c"]. to_json%> nó nói "Lỗi phân tích cú pháp" khi tôi tải trang và foo không được xác định. – patrick
Vui lòng * chỉnh sửa * câu hỏi của bạn để thêm thông tin bổ sung. Và cho chúng tôi thấy ** Javascript ** là kết quả của tệp js erb Ruby. Bạn chỉ đang nói cho chúng tôi "lỗi phân tích cú pháp" trên trình duyệt - chúng tôi muốn xem * những gì * không thể được phân tích cú pháp - hãy xem tệp js. –