У вас есть нулевой объект, когда вы его не ожидали (страница встреч) - PullRequest
0 голосов
/ 06 марта 2012

Хорошо, поэтому я создаю сайт встреч для преподавателей и студентов, чтобы войти в систему и создавать / редактировать встречи.У меня есть профессора, но я борюсь со студентами.Прямо сейчас я пытаюсь сделать так, чтобы студенты нажимали кнопку рядом с их назначением, чтобы удалить себя от назначения, которое они имеют с профессором.Теперь я могу легко удалить идентификатор встречи, и встреча исчезнет, ​​но вместо этого я хочу удалить student_id из встречи, чтобы другие студенты могли выбрать эту встречу позже.вот мой код: КОНТРОЛЛЕР:

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

ПРОСМОТР:

<% @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 %>

Я включил ссылку сюда со своими файлами, если вы хотите посмотреть. НАЖМИТЕ ЗДЕСЬ, ЧТОБЫ ПРОСМОТРЕТЬ МОИ ФАЙЛЫ. Кроме того, все происходит в контроллере встреч.и эта проблема в представлении показа студента (где вы нажимаете кнопку удаления).

РЕШЕНИЕ: Хорошо, так что я заработал благодаря помощи, которую вы получили от вас, ребята.Итак, вот что я сделал: @appointment = Appointment.find_by_id_and_student_id (params [: id], сессия [: student] .user_id) @ meeting.update_attribute (: student_id, nil)

1 Ответ

0 голосов
/ 06 марта 2012

Почти наверняка ошибка в том, что Appointment.find_by_id_and_student_id возвращает ноль.Выполните рефакторинг своего кода следующим образом:

@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

Это предотвратит получение этой ошибки и поможет отследить ее основную причину.

...