그래서 여기 내 모델입니다 :has_one 및 belongs_to를 통해 _existing_ 개체를 사용자와 연결 하시겠습니까?
user.rb : has_one :interview_slot
interview_slot.rb : belongs_to :user
interview_slot
는 start_time
, end_time
및 available
부울있다.
예를 들어 이미 20 interview_slot
인스턴스의 목록을 생성했으며 사용자가 드롭 다운 상자에서 그 중 하나를 선택하도록 허용한다고 가정 해 보겠습니다. , nil
입니다
@interview_slot = find_interview_slot(@rushee)
def find_interview_slot(user)
return InterviewSlot.find_by(user_id: user.id)
rescue
nil
end
@interview_slot
경우에, 나는 아직도 드롭 다운 상자에 available
있는 인터뷰 슬롯의 모든 목록을 표시하려면 :
내가 먼저 사용자가 이미 인터뷰 슬롯이 있는지 확인 사용자가 인터뷰 슬롯 중 하나를 선택하고 제출을 클릭하고 지정된 InterviewSlot
이 사용자와 연결되도록 할 수 있습니다. 내 질문은 어떻게 할 양식을 작성합니까? 저는 @user.interview_slots.build
과 같은 것을 호출하고 form_for
을 호출하는 것에 익숙합니다 : form_for(@interview_slot) do |f|
,하지만 분명히 나는이 상황에서 새로운 interview_slot을 만들고 싶지 않습니다. 단지 기존의 interview_slot을 사용자와 연관시키고 싶습니다.
어떤 통찰력이라도 있습니까? 감사.
편집 : 또한 사용자와 아직 연결되지 않은 모든 InterviewSlots의 컬렉션 인 인스턴스 변수가 있습니다. @available_slots = InterviewSlot.where(user_id: nil)
; 사용자가이 컬렉션에서 단일 슬롯을 선택하고 슬롯을 사용자와 연관시킬 수있는 양식을 만드는 방법을 모르겠습니다.
편집 2 :
<%= form_for(@interview_slot) do |f| %>
<% slots_for_select = {}
@available_slots.each do |slot|
slots_for_select[slot.start_time.strftime("%a. %D | %l:%M %p")] = slot
end %>
<%= select_tag(:interview_slot, options_for_select(slots_for_select)) %>
<%= f.submit "Schedule Interview", class: "btn btn-sm" %>
<% end %>
이 나에게 가능한 모든 인터뷰 슬롯의 드롭 다운 상자를 제공하지만, 문제가 @interview_slot
가 동일하게 설정되어 있는지 다시 한 번입니다 :
지금은이 코드를 컨트롤러의 @user.interview_slots.build(interview_slot_params)
에 - 어떻게 새로운 인터랙션 슬롯을 만드는 대신 @user
의 ID로 선택된 interview_slot
을 업데이트하도록 만드시겠습니까?