Json gdzie generować?

Zastanawiam się gdzie generować json. To raczej nie warstwa modelu a widoku.

Jednak w rails używa się przewaznie to_json na modelu problem jest tylko taki, że chciałbym w danych zwracanych przez jsona
zawrzeć np adres www do avatara, czy np do szczegołów danej treści (wystarczy zobaczyć na api blip.pl by zrozumieć, że przekazywanie adresów w jsonie jest czesto potrzebne).

Jakieś sugestie? generować z routes adresy w modelu?

http://apidock.com/rails/ActiveRecord/Serialization/to_json metoda to_json przyjmuje parametry. Spróbuj z nimi się pobawić. Albo nadpisz w klasie metodę to_json

Zawsze mozesz to zrobic w modelu nadpisujac to_json i to jest pewnie najprostsza metoda zazwyczaj.

Najlepszy pomysł na jaki wpadliśmy, to wykorzystanie do tego celu helperów. Można wtedy dość mocno odchudzić kontroler, tworząc zwykły szablon ERB, a całą resztę podzielić na niewielkie metody w helperze. Kod helpera jest u nas dość mocno rozgrzebany, jednak jest to spowodowane dość dużymi zmianami jakie zaszły w strukturze JSON-a (kod trzeba zrefaktoryzować).

Metoda jest przydatna do generowania prostych JSON-ów. Minusem jest to, że powstaje dość mocny bałagan w kontrolerach.

Co wiąże się ze złamaniem wzorca MVC i jest problematyczne w przypadku gdy w JSON-ie potrzebujemy helperów do ścieżek, current_usera, itp. Często w aplikacji jeden model musi mieć wiele metod “to_json”.

Oszkurde! Czemu ja na to nie wpadłem? :slight_smile:

Lecę refaktoryzować kawałek kodu, z którym miałem podobny problem.

qoobaa a co z to_hash metoda? Używasz jej? (model.to_hash)

Dawno z tego nie korzystałem. Podobnie jak w przypadku model.to_json da się nią wygenerować jakieś w miarę proste struktury, rozwiązanie z helperem jest dużo bardziej elastyczne.