0

背景として、私は現在 、 、 の 3 つのモデルを持っています。Schoolこれらはすべて 1 対多の関係にあります (学校のコースとコースのセクションで、対応する関係もモデルで確立されています)。次のリソースもあります (除外は後で設定します)。CourseSectionhas_manyhas_manybelongs_to

  resources :schools do
    resources :courses
  end
  resources :sections #not part of the nest

sectionsネストされたリソースの一部として機能する可能性はありますが、Railsガイドではネストを 1 層だけにすることを強く推奨していたため、除外しました。

だから、私の問題は、新しいセクションを作成するとき(でSectionsController)、それをコースにリンクさせるときですcourse_id

  def new
    @course = Course.find(params[:id]) #this line results in an error
    @section = @course.sections.new
  end

:id、:course_id などを使用してさまざまな組み合わせを試しても、最初の行では常に「ID なしでコースが見つかりませんでした」というエラーが発生しますCourse。私が見逃している何か他のものはありますか?ご協力いただきありがとうございます!

を実行rake routesすると、出力は次のようになります。

         sections  GET    /sections(.:format)                            sections#index
                   POST   /sections(.:format)                            sections#create
      new_section  GET    /sections/new(.:format)                        sections#new
     edit_section  GET    /sections/:id/edit(.:format)                   sections#edit
          section  GET    /sections/:id(.:format)                        sections#show
                   PUT    /sections/:id(.:format)                        sections#update
                   DELETE /sections/:id(.:format)                        sections#destroy
    school_courses GET    /schools/:school_id/courses(.:format)          courses#index
                   POST   /schools/:school_id/courses(.:format)          courses#create
 new_school_course GET    /schools/:school_id/courses/new(.:format)      courses#new
edit_school_course GET    /schools/:school_id/courses/:id/edit(.:format) courses#edit
     school_course GET    /schools/:school_id/courses/:id(.:format)      courses#show
                   PUT    /schools/:school_id/courses/:id(.:format)      courses#update
                   DELETE /schools/:school_id/courses/:id(.:format)      courses#destroy
           schools GET    /schools(.:format)                             schools#index
                   POST   /schools(.:format)                             schools#create
        new_school GET    /schools/new(.:format)                         schools#new
       edit_school GET    /schools/:id/edit(.:format)                    schools#edit
            school GET    /schools/:id(.:format)                         schools#show
                   PUT    /schools/:id(.:format)                         schools#update
                   DELETE /schools/:id(.:format)                         schools#destroy
              root        /   
4

2 に答える 2

1

あなたのコースは学校とネストされているので、これを試してください

モデルには

class School < ActiveRecord::base
  has_many :courses
end

class Course < ActiveRecord::base
  belongs_to :school
end


def new
  school = School.find(params[:school_id])
  @course = school.courses.new
  #your code 
end

を実行することで、このルーティングについてより多くのアイデアを得ることができます

rake routes

HTH

于 2013-01-14T03:14:25.257 に答える
1

新しいセクションリクエストにこれらのパラメーターが必要です

{:School_id=> some_id, :course_id=>some_id}

コースでセクションバインディングを取得できるように

セクションコントローラーで

 def new
    @school = School.find(params[:school_id])
    @course = @school.courses.where(:id=>params[:course_id]).first
    @section = @course.sections.new
  end

これが治ることを願っています:)

于 2013-01-15T08:29:00.633 に答える