我想我會問一個2部分的問題;如果這應該分成2個問題,我的道歉。simple_form與嵌套屬性
首先,我想存儲的課程爲course
表(課程名稱,講師,START_TIME,END_TIME,等...),這將有course_days
(course_id
和day
與的一天相當於一個ActiveRecord關係周=> 1爲星期日,2爲星期一等)。我的最終目標是在FullCalendar中將它們顯示爲一個時間表,這就是爲什麼我認爲將course
和course_days
分隔成兩個具有ActiveRecord關係的表格最好。 使用Rails,這是實現這一目標的好方法嗎?
如果是這樣,其次,我使用簡單的形式將以下數據添加到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
任何幫助將不勝感激!
編輯: 我遇到的問題與上面的表格: 1)如何生成7個複選框與分配的屬性,以確定它的星期一,星期二等? 2)使用嵌套屬性,即使選中了多個複選框,它也只向數據庫提交一條記錄。
編輯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)
好像是好主意,你關心的是什麼?或問題? – juanpastas
嗨@juanpastas,我更新了我的問題。 – Dodinas
你會對這個寶石感興趣嗎:https://github.com/ryanb/nested_form?我認爲它可以幫助你實現你想要的。我要做的是...當用戶選中「日複選框」時,它會在隱藏的「link_to_add」按鈕上單擊(使用coffeescript),並按照相應的日期值預先篩選新的嵌套屬性之一。你認爲這個寶石可以幫你嗎?你想讓我寫一個詳細的答案嗎? – Kulgar