【发布时间】:2017-08-17 15:33:53
【问题描述】:
我对 Rails 很陌生,所以这似乎很容易做到。我通过使用 rails 命令 generate scaffold workout name 创建了一个 workout 资源。然后我用rails g model workout_id 创建了一个rails 模型。之后,我将has_many 添加到workout,并将belongs_to 添加到weeks。
class Workout < ApplicationRecord
has_many :week
end
class Week < ApplicationRecord
belongs_to :workout
end
我想要做的就是点击workout/show 页面上的按钮/链接,将周添加到特定的锻炼时间>。
最好的方法是将 addPages 操作添加到 workouts 或添加到 weeks 类的操作?我希望显示页面以适当的周数重新加载自身更新。我试过类似的东西
def addWeek
@week = Week.create()
@workout.week << @week
end
但我遇到了一些错误。
【问题讨论】:
-
你可以简单地做
@workout.weeks.create(attr1: value1, attr2: value2)或其他方式(有点混乱):Week.create(attr1: value1, attr2: value2, workout: @workout) -
这是正确的,那么我将如何路由此操作?使用看跌期权?
-
动作目的和HTTP动词的映射如下:Creation => POST, Update => PUT (or PATCH), destroy => DELETE, retrieve (read) => GET (@ 987654321@)
-
我已经使用 put 路由了操作,然后将按钮与 addWeek_workout_path 链接,但是我得到 No route matches [GET] "/workouts/1/addWeek",有什么建议吗?
-
请求以 GET 形式发送,使用
method: :post作为link_to/button_to的参数(请参阅文档中的 Destroy 操作示例:apidock.com/rails/ActionView/Helpers/UrlHelper/button_to)
标签: ruby-on-rails class model-view-controller