【发布时间】:2020-09-14 12:17:47
【问题描述】:
我有一个课程模型:
class Course < ApplicationRecord
has_many :sub_courses
validates :title, presence: true
# Course associated to SubCourse via 'sub_course_id' on Course table
end
还有一个子课程模型:
class SubCourse < ApplicationRecord
belongs_to :course
# SubCourse associated to Course via 'course_id' on SubCourse table
end
在courses.show.html(特定课程页面,例如 admin/courses/1)上,我有一个链接到新的子课程页面的按钮
%table
%tr
%td= @course.title
%td= @course.description
= button_to "Add New Sub Course", new_admin_sub_course_path(course_id: @course.id), method: :post
新的子课程页面sub_courses.new.html 表单。
= form_for @sub_course, url: admin_sub_courses_path do |f|
= f.label :title
= f.text_field :title
= f.label :description
= f.text_field :description
= f.submit
转到子课程新页面时,我看到错误No route matches [POST] "/admin/sub_courses/new"
我的sub_course_controller.rb 看起来像这样:
def new
@course = Course.find(params.require(:course_id))
@sub_course = @course.sub_course.new
end
def create
if @sub_course.save
redirect_to admin_sub_courses_path, notice: "saved"
else
render "new"
end
end
我的路线如下所示:
namespace :admin do
resources :courses, { :only => [:index, :new, :create, :edit, :destroy, :update, :show] }
resources :sub_courses
end
如何从我来自的原始显示页面成功创建与其课程自动关联的子课程?
架构结构如下所示:
create_table "courses", force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "title"
t.string "description"
t.integer "sub_course_id"
end
create_table "sub_courses", force: :cascade do |t|
t.string "title"
t.text "description"
t.string "question"
t.string "possible_answer"
t.string "correct_answer"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "course_id"
end
为子课程运行 rake 路线后:
admin_sub_courses GET /admin/sub_courses(.:format) admin/sub_courses#index
POST /admin/sub_courses(.:format) admin/sub_courses#create
new_admin_sub_course GET /admin/sub_courses/new(.:format) admin/sub_courses#new
edit_admin_sub_course GET /admin/sub_courses/:id/edit(.:format) admin/sub_courses#edit
admin_sub_course GET /admin/sub_courses/:id(.:format) admin/sub_courses#show
PATCH /admin/sub_courses/:id(.:format) admin/sub_courses#update
PUT /admin/sub_courses/:id(.:format) admin/sub_courses#update
DELETE /admin/sub_courses/:id(.:format) admin/sub_courses#destroy
【问题讨论】:
标签: ruby-on-rails ruby associations