2017-08-17 80 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 
相关问题