1

私のRailsアプリでは、ユーザーと学校がコースを作成でき、各コースには1つのシラバスがあります。

私のコースモデルでは:

belongs_to :hostable, polymorphic: true
has_one  :syllabus

シラバス:

belongs_to :course

学校(およびユーザー):

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

私のルートは現在次のように設定されています。

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

私のシラバスコントローラーには次のものがあります。

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

私のコースコントローラーにはこれがあります:

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

私のコースビューページには

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

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

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

しかし、学校内のコースページからシラバスを作成しようとすると、次のようになります。

「IDのないコースが見つかりませんでした」

私は何が間違っているのですか?ユーザーと学校の両方がコースを作成し、コース内からシラバスを作成できるように、ルート/モデルを再構成するにはどうすればよいですか?javascriptを使用してコースモデルの下にシラバスモデルをネストしようとしましたが、いくつか問題がありました。

4

2 に答える 2

1

ルーティングにシラバスを入れ子にしてみてください。

  resources :courses do 
     resource :syllabus
于 2012-07-06T21:38:44.077 に答える
0
  @school = Course.find(params[:school_id])

私には疑わしいようです。

それが必要です

  @school = School.find(params[:school_id])

またはさらに簡単に

  @school = @course.school
于 2012-07-06T18:43:14.407 に答える