У меня есть несколько моделей, ученик, дневник и класс и записи в дневнике
Каждый ученик принадлежит к классу, у каждого ученика есть дневник для каждого класса.
Когда вы создаете ученика запись, вы выбираете оценку, я хочу иметь возможность создать дневник с именем и оценкой учащегося.
Модель дневника
class Diary < ApplicationRecord
belongs_to :student
belongs_to :user
belongs_to :grade
end
Модель студента
class Student < ApplicationRecord
belongs_to :user
has_many :diaries, dependent: :destroy
has_many :subjects, dependent: :destroy
has_many :grades #confusing for me also... should be in one grade at a time?
accepts_nested_attributes_for :diaries
accepts_nested_attributes_for :subjects
def subject_list=(subject_string)
subject_name = subject_string.split(“,”).collect{ |s| s.strip.downcase }.uniq
new_or_found_subjects = subject_names.collect { |name| Subject.find_or_create_by(name: name) }
self.subjects = new_or_found_skills
end
def subject_list
self.subjects.collect do |subject|
subject.name
end.join(“,”)
end
end
Модель для класса
class Grade < ApplicationRecord
has_many :subjects
belongs_to :student
belongs_to :diary
end
Страница студенческого шоу
<div class="col-sm-7">
<div class="card">
<div class="card-body">
<%= simple_form_for :diary, url: new_student_diary_path(@student) do |f| %>
<!-- I want to have a button here that creates a diary for the student, without manually entering any information
the information shoud be student_id, user_id and student.grade_id
-->
<%= f.submit "Create Diary", class: "btn btn-primary text-center" %>
<%end%>
</div>
Мой контроллер
def create
@student = Student.find(params[:student_id])
@diary = @student.diaries.build(diary_params)
@diary.user = current_user
respond_to do |format|
if @diary.save
format.html { redirect_to @diary, notice: 'Diary was successfully created.' }
format.json { render :show, status: :created, location: @diary }
else
format.html { render :new }
format.json { render json: @diary.errors, status: :unprocessable_entity }
end
end
end
Моя задача и в моделях, и в контроллерах, и в представлениях ... Кажется, я не могу обернуться вокруг этого .... Я был бы очень признателен за шаг ответьте шаг за шагом, чтобы я мог научиться делать это.