的關聯,我使用Rails在我的應用程序的後端。使用respond_with
返回show
行動Activity
和Workout
模型。respond_with所有在軌
關係:
Activity has_many Workouts
Workout has_many Exercises
... belongs_to ...
控制器鍛鍊:
def show
respond_with Workout.find(params[:id])
end
控制器的活動:
def show
respond_with Activity.find(params[:id])
end
路線:
exercises GET /exercises(.:format) exercises#index
POST /exercises(.:format) exercises#create
exercise GET /exercises/:id(.:format) exercises#show
activity_workouts GET /activities/:activity_id/workouts(.:format) workouts#index
POST /activities/:activity_id/workouts(.:format) workouts#create
activity_workout GET /activities/:activity_id/workouts/:id(.:format) workouts#show
activities GET /activities(.:format) activities#index
POST /activities(.:format) activities#create
activity GET /activities/:id(.:format) activities#show
在瀏覽器中,我在下面的輸入:
http://localhost:3000/activities/1.json
我得到這個,這包括所有Workouts
本次活動1下:
{"id":1,"title":"Climbing","description":"climbing 1","created_at":"2017-03-13T17:48:30.220Z","updated_at":"2017-03-13T17:48:30.220Z","user_id":1,"workouts":[{"id":1,"name":"workout 1","description":"workout2","activity_id":1,"created_at":"2017-03-13T17:59:45.742Z","updated_at":"2017-03-13T17:59:45.742Z"},{"id":2,"name":"workout 2","description":"description 2","activity_id":1,"created_at":"2017-03-13T19:27:57.601Z","updated_at":"2017-03-13T19:27:57.601Z"},{"id":3,"name":"workout 3","description":"description 3","activity_id":1,"created_at":"2017-03-13T20:53:53.191Z","updated_at":"2017-03-13T20:53:53.191Z"},{"id":4,"name":"workout 4","description":"des 4","activity_id":1,"created_at":"2017-03-13T20:55:15.965Z","updated_at":"2017-03-13T20:55:15.965Z"}]}
但是,當我輸入:
http://localhost:3000/activities/1/workouts/1.json
我只是在它得到這個沒有其exercises
:
{"id":1,"name":"workout 1","description":"workout2","activity_id":1,"created_at":"2017-03-13T17:59:45.742Z","updated_at":"2017-03-13T17:59:45.742Z"}
我不能告訴的是這兩個動作之間的差異。
解決方案:
添加這下model.rb
def as_json(options = {})
super(options.merge(include: :exercises))
end
應該有'下鍛鍊exercies',但他們沒有表現出 – Leogoesger
^^這應該是你原來的問題的一部分(這一點不明確你以爲看錯了兩個不同的動作)。 –
你的'活動'模型有一個'includes'的地方嗎? Rails根據給定的嵌套路由(這不是'Workout' - >'Exercise')推斷「Activity」 - >'Workout'的嵌套結構,這是*貌似合理的。導軌標準......所以要在'Exercise'你將需要添加一個'includes'聲明 –