2017-08-17 49 views
1

我對軌道很新,所以這看起來很容易做。我使用rails命令generate scaffold workout name創建了一個鍛鍊資源。然後我創建了一個帶有rails g model workout_id的導軌模型。之後,我加has_many鍛鍊belongs_to如何在Ruby on Rails中將子對象添加到父對象

class Workout < ApplicationRecord 
has_many :week 
end 

class Week < ApplicationRecord 
belongs_to :workout 
end 

所有我希望能夠做的就是點擊workout/show頁面上按鈕/鏈接到一個周添加到特定鍛鍊。 要做到這一點,最好的方法是添加一個addPages動作到鍛鍊或創建動作類?我希望顯示頁面可以重新加載更新週數適當的時間。我試過類似

def addWeek 
@week = Week.create() 
@workout.week << @week 
end 

但我收到一些錯誤。

+0

你可以簡單地做'@ workout.weeks.create(attR1位:值1,attR2位:值2)'或其他方式(有點混亂):'Week.create(attR1位:值1,attR2位:VALUE2 ,workout:@workout)' – MrYoshiji

+0

這是正確的,那麼我將如何路由此操作? 使用put? –

+0

動作目的和HTTP動詞之間的映射如下:創建=> POST,更新=> PUT(或PATCH),銷燬=>刪除,檢索(讀取)=> GET(http://www.restapitutorial。 com/lessons/httpmethods.html) – MrYoshiji

回答

0

路線

resources :workouts do 
    post :addWeek, on: :member 
end 

查看

= link_to "Add", add_week_workout_path(@workout), method: :post 

控制器

def add_week 
    @workout.weeks << Week.create 
end 

型號

class Workout < ApplicationRecord 
    has_many :weeks 
end 

class Week < ApplicationRecord 
    belongs_to :workout 
end 
相關問題