Думаю, я собираюсь задать вопрос из двух частей; если это нужно разделить на 2 вопроса, мои извинения.simple_form с вложенными атрибутами
Во-первых, я стараюсь хранить курсы в course
стол (COURSE_NAME, инструктор, start_time, END_TIME и т.д ...), которые имели бы отношение ActiveRecord с course_days
(course_id
и day
что соответствует день из неделя => 1 на воскресенье, 2 на понедельник и т. д.). Моя конечная цель - отобразить их как график в FullCalendar, поэтому я думаю, что лучше всего выделить разделение course
и course_days
на две таблицы с отношением ActiveRecord. Использование Rails, это хороший способ достичь этого?
Если это так, во-вторых, я использую Simple Form для добавления следующих данных в 2 таблицы: course
и course_days
. И я думаю, что приближаюсь. Я просто возникли некоторые трудности, добавляющий course_days
(например, 3 отдельные строки будут добавлены в course_days
если «Понедельник», «Вторник» и «четверг» проверяются
Вот что я работаю с:.
#new.html.erb
<%= simple_form_for @course, html: { autocomplete: 'off' } do |f| %>
<%= f.input :title, label: 'Class Name', placeholder: 'Class Name' %>
<%= f.input :instructor, placeholder: "Instructor Name" %>
<%= f.input :instructor_email, placeholder: 'Instructor Email' %>
<%= f.input :building, placeholder: 'Building' %>
<%= f.input :room, placeholder: 'Room' %>
<%= f.input :semester do %>
<%= f.select :semester_id, @semesters.map { |s| [s.name, s.id] } %>
<% end %>
<%= f.simple_fields_for :course_days do |p| %>
<%= p.input :day, :as => :boolean %>
<% end %>
<%= f.button :submit, :class => 'btn btn-primary' %>
#app/models/course.rb
class Course < ActiveRecord::Base
has_many :course_days
accepts_nested_attributes_for :course_days
end
#app/models/course_day.rb
class CourseDay < ActiveRecord::Base
belongs_to :course
end
#app/controllers/courses_controller.rb
def new
@course = Course.new
7.times { @course.course_days.build } #For 7 days of the week??
@semesters = Semester.all()
end
def create
@course = Course.new(course_params)
if @course.save
redirect_to action: 'new'
flash[:notice] = "Course Created."
else
render :new
end
end
def course_params
params.require(:course).permit!
end
Любая помощь была бы принята с благодарностью!
EDIT: Вопросы, которые возникают у меня с формой выше: 1) Как я могу сгенерировать 7 флажков с назначенным атрибутом, чтобы определить, есть ли его понедельник, вторник и т. Д.? 2) Используя вложенные атрибуты, он отправляет только одну запись в базу данных, даже если проверено несколько флажков.
Edit 2
Таким образом, по существу, когда эта форма представляется, я хотел бы таблицы базы данных, чтобы выглядеть примерно так:
courses: id => 14, name => Bio 101, start_time => 08:00:00, end_time 09:00:00
course_days: id => 11, course_id => 14, day => 1 (For monday)
course_days: id => 12, course_id => 14, day => 3 (For wednesday)
course_days: id => 13, course_id => 14, day => 5 (For friday)
кажется a хорошая идея, что именно вас беспокоит? или проблема? – juanpastas
Привет @juanpastas, я обновил свой вопрос. – Dodinas
Вас интересует этот драгоценный камень: https://github.com/ryanb/nested_form? Я думаю, что это может помочь вам достичь того, чего вы хотите. Я бы сделал ... когда пользователь проверяет флажок «день», он нажимает (используя coffeescript) на скрытую кнопку «link_to_add» и предварительно фильтрует один из новых вложенных атрибутов на соответствующее значение дня. Как вы думаете, этот камень может вам помочь? Вы хотите, чтобы я написал подробный ответ? – Kulgar