私は角度JSを試しています。私は自分のレールアプリケーションで定義されたネストされたリソースからデータを取得したいと思います。ネストされたリソースを持つAngular JS ngResource
私は次の行に書いた:
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()
を、私は次のエラーを取得する:
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'
マイレールのルートはそうのように構成されています
resources :users do
resources :user_missions
end
は、私はそれが来ると思います私には "@id"を理解していない。それはangularjs siteからの "データオブジェクト"に由来し、その意味が正確にはわかりません。
ご協力いただきありがとうございます。
更新
もう一つの問題。私は$resource
とネストされたリソース(例User has_many :missions, through: :user_missions
)を使用するangularjsを持つレールの例を見いだせませんでした。 ajaxで入れ子にされたリソース($resource
)を操作するangularjsの良い例はありますか?
私はまだ少し混乱しています。親オブジェクト(User)と子オブジェクト(UserMission)からIDを見つけ、それらをAngularjsを持つrailsアプリケーションのリソースに渡してネストされたリレーションクエリを完成させるにはどうすればよいですか? – GTDev
サービスのデフォルトパラメータ '{user_id:" @user_id "、id:" @id "}を宣言することによって、パラメータを持たないサービスを呼び出すときに、コールで渡したオブジェクトから値が取得されます。あなたの場合、 'UserMission.query()'のようにパラメータを持たないサービスを呼び出していますが、値を渡していないので、サービスはnull値で呼び出されます。したがって、サーバは '/ users/user_missions 'これはエラーを示します。私の答えに示されているように、コールにパラメータ値を含める必要があります。 – remigio