Próbuję out kątowego JS i chcę uzyskać dane z zagnieżdżonego zasobu zdefiniowanego w mojej aplikacji rails.Angular JS ngResource z zagnieżdżonymi zasobami
napisałem następujące linie:
UserMission = $resource("https://stackoverflow.com/users/:user_id/user_missions/:id", {user_id: "@user_id", id: "@id"}, {update: {method: "PUT"}})
$scope.user_missions = UserMission.query()
i pojawia się następujący błąd:
Processing by UsersController#show as JSON
Parameters: {"id"=>"user_missions"}
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", 1]]
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1 [["id", "user_missions"]]
Completed 404 Not Found in 10ms
ActiveRecord::RecordNotFound (Couldn't find User with id=user_missions):
app/controllers/users_controller.rb:100:in `current_resource'
app/controllers/application_controller.rb:34:in `authorize'
moich szyn trasy organizowane są w taki sposób:
resources :users do
resources :user_missions
end
myślę chodzi do mnie nie rozumiejąc "@id". Mówi, że pochodzi z "obiektu danych" z angularjs site i nie jestem do końca pewien, co to oznacza.
Każda pomoc zostanie doceniona dzięki.
Aktualizacja
Inną kwestią. Nie znalazłem żadnych przykładów szyn z angularjs przy użyciu zasobów zagnieżdżonych (przykład użytkownika has_many :missions, through: :user_missions
) z $resource
. Czy istnieje dobry przykład manipulowania zasobami zagnieżdżonymi angularjs (z $resource
) za pomocą ajax?
Więc wciąż jestem trochę zdezorientowany. Jak znaleźć id z obiektu nadrzędnego (użytkownika) i obiektu podrzędnego (UserMission) i przekazać je do zasobu aplikacji railsowej za pomocą Angularjs i wypełnić zapytanie dotyczące relacji zagnieżdżonej? – GTDev
Deklarując domyślne parametry usługi "{user_id:" @user_id ", id:" @id "}" mówisz, że podczas wywoływania usługi bez parametrów, otrzymują wartości z obiektu, który przekazałeś w wywołaniu. W twoim przypadku wywołujesz usługę bez parametrów, jak w 'UserMission.query()', ale nie przekazujesz żadnej wartości, więc usługa jest wywoływana z wartościami pustymi, dlatego serwer dostaje '/ users/user_missions 'który daje błąd. Powinieneś podać wartości parametrów w wywołaniu, jak wskazałem w mojej odpowiedzi. – remigio