私は2つのモデルを持っています:インタビューとインタビューがあります。Rails:多対1の関係のネストされたフォーム
インタビューとインタビューの間には、多くの関係があります。
/interviews/new
ルートを使用して新しいインタビューを作成する際に、新しいインタビュー担当者を追加したいと考えています。面接者が既に存在していた場合は、新しく作成された面接はそれに関連している必要があります。
つまり、「belongs_to」関係のネストされたフォームを作成したいと考えています。正確には、その子のフォームを使用して、親を作成するか、既存のものにリンクします。ここに私のコードは次のとおりです。
class Interviewee < ApplicationRecord
has_many :interviews, inverse_of: :interviewee
end
インタビューコントローラ
class InterviewsController < ApplicationController
def index
@interviews = Interview.all
end
def new
@interview = Interview.new
#2.times {@interview.interviewers.build}
@interview.interviewers.build
#@interview.interviewee.build
end
def create
#render plain: params[:interview].inspect
@interview = Interview.new(interview_params)
@interview.save
redirect_to @interview
end
private
def interview_params
params.require(:interview).permit(
:title, :date, :start_time, :end_time,
interviewee_attributes: [:id, :email],
interviewers_attributes: [:id, :email]
)
end
end
インタビューinterviewee.rb
class Interview < ApplicationRecord
belongs_to :interviewee, inverse_of: :interviews
has_many :meetings
has_many :interviewers, through: :meetings
accepts_nested_attributes_for :interviewee
accepts_nested_attributes_for :interviewers
end
interview.rb
- new.html.erb
<h1>Schedule a New Interview</h1>
<%= form_for @interview, url: interviews_path do |f| %>
<p>
<%= f.label :title %><br>
<%= f.text_field :title %>
</p>
<p>
<%= f.label :date %><br>
<%= f.date_field :date %>
</p>
<p>
<%= f.label :start_time %><br>
<%= f.time_field :start_time %>
</p>
<p>
<%= f.label :end_time %><br>
<%= f.time_field :end_time %>
</p>
<%= f.fields_for :interviewee do |interviewee| %>
<p>
Interviewee Email:<br>
<%= interviewee.text_field :email %>
</p>
<% end %>
<%= f.fields_for :interviewers do |interviewer| %>
<p>
Interviewer Emails:<br>
<%= interviewer.text_area :email %>
</p>
<% end %>
<p>
<%= f.submit %>
</p>
<% end %>
何らかの理由で、Intervieweeの電子メールテキストボックスがビューに表示されません。同時に、インタビュアーのためのテキストボックス(インタビューを伴う多くのものから多くのもの)が表示されます。誰かがこれについていくつかの光を当てることができますか?私は公式の "Form-helpers"ガイドでこれを行う方法については知りませんでした。
ありがとう!出来た :)。私はこの答えを受け入れる。与えられた属性を持つインタビュアー(親)が既に存在し、単にインタビュー(子)をそれにリンクさせたいのかどうかチェックしたいのですが?そのような方法を書く方法。 –
また、他の人にも役に立つかもしれないので、この質問をupvoteしてください。それは、レールの公式ガイドに記載されていないものです:) –