У меня есть форма для создания нового задания.Одно из полей формы «Задача» - это лицо, ответственное за задание.
Если при добавлении формы задания необходимо добавить нового лица в базу данных, я могу открыть модальное окно, котороеФорма для создания нового Человека.Это работает нормально и фиксирует изменения в базе данных, а затем закрывает модальное поле, однако поле Person (которое является collection_select) не обновляется, пока я не обновлю всю новую форму Task.
Вот код, используемый дляновая форма задачи (_form.html.erb в представлении задач):
<div class='row'>
<div class='col-xs-12'>
<%= form_for(@task, :html => {class: "form-horizontal", role: "form"}) do |f| %>
<div class="form-group">
<div class="control-label col-sm-2">
<%= f.label :task_name %>
</div>
<div class="col-sm-8">
<%= f.text_field :task_name, class: "form-control", placeholder: "Name of the task", autofocus: true %>
</div>
</div>
<div class="form-group">
<div class="control-label col-sm-2">
<%= f.label :person_id %>
</div>
<div class="col-sm-8">
<%= f.collection_select :person_id , current_user.people.order(:last_name), :id, :last_name, {prompt: "Select a person"}, {class: "form-control"} %>
</div>
<div id="new-person">
<!-- <%= link_to '<i class="glyphicon glyphicon-plus"></i>'.html_safe, new_person_path, class: "btn btn-xs btn-info", remote: true %> -->
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
Create new person
</button>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<%= f.submit class: 'btn btn-primary btn-lg' %>
</div>
</div>
<% end %>
<div class="col-xs-4 col-xs-offset-4">
[ <%= link_to "Cancel and return to tasks listing", tasks_path %> ]
</div>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Create New Person</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<%= render 'people/form' %>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
А вот мой код для people_controller.rb
def new
@person = current_user.people.build
end
def edit
@person = current_user.people.find(params[:id])
end
def create
@person = current_user.people.build(person_params)
respond_to do |format|
if @person.save
format.js
format.html { redirect_to people_path }
flash[:success] = "Person was saved successfully"
else
format.html {render :new }
end
end
end
А вот код дляФайл create.js.erb в представлениях People:
$('#exampleModal').hide();
$('.modal-backdrop').remove();