2012-03-06 10 views
0

わかりましたので、私は教授やログオンおよび/編集予定を作成する学生のためのアポイントメントサイトを作成しています。私は教授の側をやりましたが、私は学生と闘っています。今、私は教授と付き合っている予定から自分自身を取り除くために、自分の予定の隣にあるボタンを学生がクリックするようにしています。今すぐ私は簡単に予定のIDを削除することができますが、予定はなくなりましたが、代わりに他の生徒が後でその予定を選択できるように予定からstudent_idを削除します。ここに私のコードは次のとおりです。 CONTROLLER:あなたがそれ(予定ページ)期待していなかったときは、nilのオブジェクトを持っている

def destroy 
if session[:professor] != nil 

    @appointment = Appointment.find(params[:id]) 
    @appointment.destroy 
end 
if session[:student] != nil 
@appointment = Appointment.find_by_id_and_student_id(params[:id],params[:student_id]) 
@appointment.destroy(params[:student_id]) 
end 
end 

VIEW:あなたが見てみたい場合、私はここに私のファイルとのリンクが含まれている

<% @appointments.each do |appointment| %> 
<tr> 
<td><%= appointment.professor_id %></td> 
<td><%= appointment.student_id %></td> 
<td><%= appointment.timeslot %></td> 
<td><%= link_to 'remove appointment', appointment, confirm: 'Are you sure?', method: 
:delete %></td> 
</tr> 
<% end %> 

CLICK HERE TO VIEW MY FILES. また、すべてが予定コントローラで行われます。この問題は学生のショーに表示されます(削除ボタンを押すと表示されます)。

SOLUTION: わかりましたので、私はそれが原因私はあなたたちからもらった助けに働いてしまいました。だからここに私がやったことです: @appointment = Appointment.find_by_id_and_student_id(のparams [:ID]、セッション[:学生] .user_id) appointment.update_attribute @(:STUDENT_ID、nilの)ほぼ確実

+0

? –

+0

アプリ/コントローラ/ appointments_controller.rb:118: '「それは行番号への参照を持っていないとして、あなたが提供したコードであるかのラインを知って助けにはならない – user1179269

+0

を破壊しました。行を指し示すコードにコメントを追加します。 –

答えて

0

ここにエラーがありますAppointment.find_by_id_and_student_idはnilを返しています。このようなあなたのコードをリファクタリング:

@appointment = Appointment.find_by_id_and_student_id(params[:id],params[:student_id]) 
if @appointment 
    @appointment.destroy(params[:student_id]) 
else 
    flash[:error] = 'An appointment could not be found for that student.' 
end 

これは、そのエラーを受信できなくなりますし、あなたがその根本的な原因を突き止めるに役立つはずです。上のエラー発生し、それらの行の

+0

エラーがラインである:appointment.destroy([:STUDENT_ID] paramsは)@ – user1179269

+1

はい、しかし、おそらくエラーが '' 'ということです@任命は 'nilです。ですから、 '' '@ appointment'''を指定した行でそれを修正する必要があります。そうでない場合は、エラーのためにバックトレースを投稿する必要があります。 – Veraticus

+0

また、 'destroy'に引数を渡す必要がある場合、' appointment'は単一のモデルオブジェクトではなく、コレクションであることを意味します。 –

関連する問題