Mam obiekt w Railsach, który ma atrybuty A, B, C, D i E. Podczas przekazywania tego obiektu z powrotem do klienta za pośrednictwem obiektu JSON, jak czy mogę powiedzieć kontrolerowi szyn, aby zawierał tylko atrybuty A i D w obiekcie JSON?Określanie atrybutów obiektu Rails przekazanego do obiektu JSON
ciągu mojego kontrolera Użytkownicy, mój kod wygląda następująco:
@user = User.find(params[:id])
respond_to do |format|
format.html
format.json { render :json => @user}
end
Ten kod działa, jednak obiekt JSON, który jest zwracany zawiera wszystkie atrybuty obiektu @user. Jak mogę ograniczyć atrybuty zawarte w obiekcie JSON, zanim coś zostanie wysłane do klienta?
AKTUALIZACJA: lucapette zapewnia dobre tło o tym, co dzieje się za kulisami. Ponieważ zdarza się, że pewnie chce wszystkie atrybuty zwracane, skończyło się za pomocą następującego kodu:
format.json { render :json => @user.to_json(:only => ["id"])}
Dzięki, lucapette. Po przeczytaniu odpowiedzi przyjrzałem się metodom to_json i as_json. Następnie zmodyfikowałem swój kod w następujący sposób: format.json {render: json => @ user.to_json (: only => ["id"])}. Wygląda na to, że musi tam być jakiś niepotrzebny kod, ale nie mogłem znaleźć innego sposobu, żeby to zadziałało. – Vee
tak, możesz również użyć opcji. Działa to również w ten sposób. To naprawdę zależy od sytuacji, z którą musisz się zmierzyć. – lucapette