Trouble managing model ownership in rails app

Course Queries Syllabus Queries 3 years ago

4.91K 2 0 0 0

User submissions are the sole responsibility of contributors, with TuteeHUB disclaiming liability for accuracy, copyrights, or consequences of use; content is for informational purposes only and not professional advice.

Answers (2)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 3 years ago

 

In my rails app Users and Schools can create courses, and each course has one syllabus.

in my course model:

belongs_to :hostable, polymorphic: true
has_one  :syllabus

syllabus:

belongs_to :course

school (and user):

has_many :courses, as: :hostable, :dependent => :destroy

My routes are currently set up as follows:

resources :users do
  resources :courses 
  member do
   get :attending, :memberships
  end
end

resources :schools do 
  resources :courses 
  member do
    put :apply, :enroll
  end
end

resources :syllabuses

In my syllabuses controller I have:

def create
  @course = Course.find(params[:id])
  @syllabus = @course.build_syllabus(params[:syllabus])
  if @syllabus.save
    redirect_to @course, notice: 'Syllabus was successfully created.' 
  end
end

my courses controller has this:

def show
  @course = Course.find(params[:id])
  @school = Course.find(params[:school_id])
  @title = @course.title
  unless @course.syllabus
    @syllabus = @course.build_syllabus
  end
end

and my course view page has

<%= form_for (@syllabus) do |f| %>

  <div> <%= f.label :syllabus %> div>
  <%= f.label :name %> 
  <%= f.text_field :name %> br>
    ....

  <%= f.submit "Save Changes" %>
<% end %>

but when I try to create a syllabus from a course page inside of a school I get:

"Couldn't find Course without an ID"

What am I doing wrong? How could I reconfigure my routes/models so that both Users and Schools can create a course, and then from within the course a syllabus can be created? I tried nesting the syllabus model under the course model with javascript but I had a few problems.

0 views
0 shares

profilepic.png
manpreet 3 years ago

Try nesting syllabus in your routing,

  resources :courses do 
     resource :syllabus

0 views   0 shares

No matter what stage you're at in your education or career, TuteeHUB will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.

Similar Forum