空のフィールドで表示するためにネストされたフォームを取得しようとしています(現在のデータが表示されています)。この部分は修正されました。rails nested forms issue
また、それぞれのネストされたフォームエントリを1つずつ編集する方法を見つけようとしています。現在のところ、編集時に同じフォームにすべてのネストされたフォームエントリを表示するように編集することができます。理想的には、編集モードで開いているすべてのエントリではなく、1つのエントリだけを編集できる機能を備えた、各役職の横にリンクが必要です。
ユーザコントローラ
# renders the users/new.html.erb form
def new
@user = User.new
@user.work_histories.build # used for nested attributes in forms
end
# renders the users/edit.html.erb view form
def edit
@user = User.find(params[:id])
@user.work_histories.build # used for nested forms
end
# white listed form attributes for user and also for nested attributes (work history, qualifications, etc...).
def user_params
params.require(:user).permit(:first_name, :last_name, :email, :phone, :current_job_title, :password, :password_confirmation,
work_histories_attributes: [:user_id, :id, :job_title, :company, :description, :city, :state,:start_date, :end_date])
end
ユーザモデル
# allows for nested attributes in the user views.
accepts_nested_attributes_for :work_histories, allow_destroy: true,
reject_if: lambda {|attributes| attributes['job_title'].blank?}
WorkHistoryモデル
belongs_to :user, optional: true
ユーザのビューの表示。モーダルはfirst_nameのユーザーフィールドを表示しますが、作業履歴フィールドは表示しません。
<!-- modal -->
<div class="modal fade" id="experienceModal" tabindex="-1" role="dialog" aria-labelledby="experienceModal" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true"><i class="fa fa-times fa-fw" aria-hidden="true"></i></button>
<h4 class="modal-title" id="myModalLabel">Experience</h4>
</div>
<div class="modal-body">
<!-- one-to-many nested attributes -->
<%= form_for(@user) do |f| %>
<%= f.label :first_name %>
<%= f.text_field :first_name, size: 40, autofocus: true, class: 'form-control' %>
<%= f.fields_for :work_histories do |ff| %>
<%= ff.label :job_title %>
<%= ff.text_field :job_title, size: 40, autofocus: true, class: 'form-control' %>
<% end %><!-- fields_for -->
<%= f.submit 'Save', class: 'btn btn-primary' %>
</div><!-- modal body -->
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
<% end %><!-- form_for -->
</div><!-- modal-content -->
</div><!-- modal dialog -->
</div><!-- modal -->
UPDATE:OK 私はので、私は、ユーザーが代わりに既存のユーザーデータと一緒に表示されている形式のデータで埋めることができ、空に表示するフォームを取得する方法を考え出しました。ビューにWorkHistory.newを追加するだけでした。
<%= form_for @user do |user_form| %>
<%= user_form.label :first_name %>
<%= user_form.text_field :first_name, autofocus: true, class: "form-control" %>
<%= user_form.fields_for :work_histories, WorkHistory.new do |wh_fields| %>
job: <%= wh_fields.text_field :job_title %>
<% end %>
<% end %>