Здравствуйте! Помогите мне решить следующую проблему. У меня имеются следующие 4 таблицы: students, courses, years, year_courses. Таблица students имеет следующие поля: name, surname, middle_name, course_id. Итак. В форме год заноcим просто так, выбираем селектом курс и чтобы в поле kolvo_stud сразу менялось значение, которое соответствует числу студентов, только что выбранного курса. То есть, наверное, надо использовать Ajax. Помогите с кодом, пожалуйста! Необходимый результат: сохранение в таблицу YearCourse полей year_id, course_id и kolvo_stud.
Вообщем логика такова
Вообщем логика такова: подходит конец учебного года. Количество студентов устаканилось. Теперь наша задача - занести количество студентов для выбранного курса. То есть - записали в базу данных - дальше не изменяем. А проблема у меня и с подсчётом студентов и как занести их в kolvo_stud. Не понял многого. Не знаю, что писать в экшен new (как подсчитывать студентов). С Ajax очень туго. Мой запрос, наверное, вообще не правильный. Я бы хотел,ч тобы мне подробно показали действия (код) - что выполнить. Главное - результат - сохранение course_id и соответствующее курсу kolvo_id в таблицу YearCourse.
Вот модели для данных таблиц:
class Course < ActiveRecord::Base
has_many :year_courses, dependent: :destroy
has_many :years, :through => :year_courses
has_many :students
end
class Year < ActiveRecord::Base
has_many :year_courses
has_many :courses, :through => :year_courses
end
class Student < ActiveRecord::Base
belongs_to :course
end
class YearCourse < ActiveRecord::Base
belongs_to :year
belongs_to :course
end
def index
end
def new
@year_course = YearCourse.new
end
def update_student
year = params[:year]
course = params[:course]
courses = Course.find_by(course_id: course)
student_count = courses ? courses.students.count : 0
render :text => student_value #we are returning the value
end
def create
@course = Course.all
@year = Year.all
@student = Student.all
@year_course = YearCourse.new(year_course_params)
respond_to do |format|
if @year_course.save
format.html { redirect_to @year_course, notice: 'Student was successfully created.' }
format.json { render action: 'show', status: :created, location: @year_course }
else
format.html { render action: 'new' }
format.json { render json: @year_course.errors, status: :unprocessable_entity }
end
end
end
view/_form
<%= form_for(@year_course,:html => { class: 'login-form'}) do |f| %>
<table>
<%= f.select(:year_id, @years.map{|p| [p.name, p.id]}) %>
<%= f.select(:course_id, @courses.map{|p| [p.id]}) %>
<%= f.text_field :kolvo_stud, :value => "#{@w}" %>
</table>
<div class="footer">
<input type="submit" name="submit" onclick="validate(this.form)" value="Сохранить данные" class="button" />
</div>
<% end %>
<script>
on('change',function update_student(course) {
var course = jQuery(".course_id").val();
if(course == ""){
alert("Please select course ");
return false;
}
jQuery.ajax({
url: "update_student",
type: "GET",
data: {"course_id" : course },
dataType: "text",
success: function(data) {
jQuery(".class").val(data);
}
});
});
</script>