Mam .js.erb szablon i robie:Jak mogę przekonwertować struktury danych ruby na struktury danych javascript za pomocą .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 równa 123
foo2 równa [1,2,3]
foo3 jest niezdefiniowane (bo przeglądarka narzeka na błąd parsowania)
foo4 jest niezdefiniowany (ponieważ przeglądarka narzeka na błąd analizy)
Jedyny sposób mogę dowiedzieć się, jak dostać foo3 do pracy było zrobić:
var foo3 = "<%= ['bar'].to_json %>"; # foo3 => "["bar"]"
foo3.replace(/"/g, "\"")) # => "['bar']" <-- looks like eval should work...
eval(foo3.replace(/"/g, "\""))[0]; # => "bar" ... it works
nie mogłem foo4 pracować w ten sposób ... Próbowałem robić:
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...
Podsumowując, wszystko to, co wymaga użycia ewaluacji, jest śmieszne - MUSI być lepszy! Czy ktoś może mnie oświecić, co to jest?!?!
foo.to_json jest właściwą drogą. Pokaż nam, do czego konwertuje foo.to_json w źródle js. –
Jeśli robię var foo = <% = [1,2,3] .to_json%>, działa. Sprawdzanie foo pokazuje tablicę js [1,2,3] ... ale jeśli robię var foo = [ "a", "b", "c"]. to_json%> komunikat "Błąd analizy", gdy ładuję stronę, a foo jest niezdefiniowana. – patrick
Proszę * edytować * swoje pytanie, aby dodać dodatkowe informacje. Pokaż nam, co jest ** Javascript ** w wyniku pliku erb Ruby js. Po prostu mówisz nam "błąd parsowania" w przeglądarce - chcemy zobaczyć * czego * nie można przeanalizować - zajrzyj do pliku js. –