我有2个模型课程和类别
resources :categories do
resources :courses
end
一个类别有很多课程,一个课程属于一个类别。
目前,用户可以点击某个类别,查看该类别的所有课程,这就是我想要的。但是,当他选择创建新课程时,该新课程已经分配到一个类别。我想让用户能够创建新课程并从列表中选择一个类别,但当前路线不允许这样做。
new_category_course GET /categories/:category_id/courses/new(.:format) courses#new
我不确定我现在应该做些什么,任何建议都会有很大的帮助。
答案 0 :(得分:1)
我想让用户能够创建新课程并从列表中选择一个类别,但当前路线不允许这样做。
只是为了澄清它只是一条路线,它定义了当您点击网址时动作控制将在哪些控制器上运行。您的新课程与您的操作和表单中的类别相关联 。如果你看一下你的新动作,你就会有这样的事情:
def new
@category = Category.find(params[:category_id])
@category.courses.build #this line makes your course associated with your category
# if you don't want to associated it with the present category then you can simply do:
# @category = Category.new
# and then in your form you can have a select and then assign category to that select
end
在您的情况下,您可以使用rails shallow routes
,例如:
resources :categories do
resources :courses, only: [:index, :create, :other_actions]
end
resources :courses, only: [:new]