У меня проблема.У меня есть форма на странице, которая получает при вводе текста код субъекта, во время выполнения соответствующих проверок, одна из них дает ложный результат.
В контроллере мониторинга:
def inscribir
@student = Student.find(params[:student_id])
grupoDisponible = Student.buscarMateriaDisponible(params[:student_id],params[:codigo_materia])
vioMateria = Student.vioCurso(params[:student_id], params[:codigo_materia])
cumplePromedio = Student.calcPromedio(params[:student_id])
creditos = Student.calc_credits(params[:student_id])
@mensaje = "No se pudo asignar monitor a esa materia.\nRazon: "
@todoBien = true
if !grupoDisponible
@todoBien = false
@mensaje = @mensaje + "El grupo ya tiene monitor disponible."
puts "El grupo ya tiene monitor disponible."
end
if !vioMateria
@todoBien = false
@mensaje = @mensaje + "El estudiante no ha visto la materia aun"
puts "El estudiante no ha visto la materia aun"
end
if !cumplePromedio
@todoBien = false
@mensaje = @mensaje + "El estudiante no cumple el promedio requerido ser monitor"
puts "El estudiante no cumple el promedio requerido ser monitor"
end
if creditos < 22
@todoBien = false
@mensaje = @mensaje + "El estudiante no cumple con los minimos creditos vistos."
puts "El estudiante no cumple con los minimos creditos vistos."
end
if @todoBien
@mensaje = Student.ingresarMonitoria(params[:student_id], params[:codigo_materia])
puts @mensaje
end
end
vioMateria всегда сохраняет ложное значение, то есть функция vioCourse всегда возвращает ложное значение.
Функция vioCourse (в модели):
def self.vioCurso(id_student, cod_subject)
puts id_student
puts cod_subject
logs = Student.find(id_student).logs
encontrado = false
logs.each do |log|
codigo = Subject.find(log.subject_id).codigo
if codigo == cod_subject
encontrado = true
end
end
return encontrado
end
Логикаметод в порядке, так как я попробовал логику в консоли rails, заменив переменные существующими значениями, при этом он выполняется, но на веб-странице не всегда выдает false, более того, когда я вхожу на эту страницу, всегда целикомкод выполняется, когда мальчик на кнопку всегда дает ложь, входные параметры в порядке.
Существующие данные в разных таблицах базы данных:
SHELL:
Started POST "/students/1/monitorings/inscribir" for 127.0.0.1 at 2018-10-07 02:57:56 -0500
Processing by MonitoringsController#inscribir as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"+6Shqw+1nRkPnPt+ag/51tuJoVsH35Zip4fvsyR5FbCYjAdjECWrN56OOOb2iK5f+yyv8VhCIhYIZOp7IE7lMA==", "codigo_materia"=>"1256", "commit"=>"Buscar", "student_id"=>"1"}
Student Load (0.0ms) SELECT "students".* FROM "students" WHERE "students"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]]
(0.0ms) SELECT COUNT(*) FROM "subjects" WHERE "subjects"."student_id" = ? AND "subjects"."codigo" = ? [["student_id", 1], ["codigo", 1256]]
1
1256
CACHE Student Load (0.0ms) SELECT "students".* FROM "students" WHERE "students"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]]
Log Load (1.0ms) SELECT "logs".* FROM "logs" WHERE "logs"."student_id" = ? [["student_id", 1]]
Subject Load (1.0ms) SELECT "subjects".* FROM "subjects" WHERE "subjects"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]]
Subject Load (1.0ms) SELECT "subjects".* FROM "subjects" WHERE "subjects"."id" = ? LIMIT ? [["id", 2], ["LIMIT", 1]]
Subject Load (1.0ms) SELECT "subjects".* FROM "subjects" WHERE "subjects"."id" = ? LIMIT ? [["id", 3], ["LIMIT", 1]]
Subject Load (0.0ms) SELECT "subjects".* FROM "subjects" WHERE "subjects"."id" = ? LIMIT ? [["id", 4], ["LIMIT", 1]]
CACHE Student Load (0.0ms) SELECT "students".* FROM "students" WHERE "students"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]]
CACHE Student Load (0.0ms) SELECT "students".* FROM "students" WHERE "students"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]]
CACHE Log Load (0.0ms) SELECT "logs".* FROM "logs" WHERE "logs"."student_id" = ? [["student_id", 1]]
CACHE Subject Load (0.0ms) SELECT "subjects".* FROM "subjects" WHERE "subjects"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]]
CACHE Subject Load (0.0ms) SELECT "subjects".* FROM "subjects" WHERE "subjects"."id" = ? LIMIT ? [["id", 2], ["LIMIT", 1]]
CACHE Subject Load (0.0ms) SELECT "subjects".* FROM "subjects" WHERE "subjects"."id" = ? LIMIT ? [["id", 3], ["LIMIT", 1]]
CACHE Subject Load (0.0ms) SELECT "subjects".* FROM "subjects" WHERE "subjects"."id" = ? LIMIT ? [["id", 4], ["LIMIT", 1]]
El estudiante no ha visto la materia aun
Rendering monitorings/inscribir.html.erb within layouts/students
Rendered students/_infoest.html.erb (1.0ms)
Rendered monitorings/_inscripcion.html.erb (0.0ms)
Rendered monitorings/inscribir.html.erb within layouts/students (40.9ms)
Student Load (1.0ms) SELECT "students".* FROM "students" WHERE "students"."id" = ? ORDER BY "students"."id" ASC LIMIT ? [["id", 1], ["LIMIT", 1]]
Rendered layouts/_menu.html.erb (4.0ms)
Rendered layouts/_footer.html.erb (0.0ms)
Completed 200 OK in 284ms (Views: 242.1ms | ActiveRecord: 5.0ms)
HTML-код формы (на виду):
<%= form_tag(inscribir_student_monitoring_post_path) do%>
<%= text_field_tag 'codigo_materia', nil, placeholder: "Codigo de la materia", class: "EditBox", id: "EditboxCodigoMatInsMat"%>
<hr id="LinSepComForm">
<div id="wb_ButtonInsMatInsMat">
<%= submit_tag "Buscar", id: "ButtonInsMatInsMat", class: "boton", style: "color: #FFFFFF"%>
</div>
<% end %>
Спасибо