У меня есть модель с именем AvaliationInput
, эта модель, в основном, имеет право сохранять имя поля отчета, на который кто-то собирается ответить позже.Каждый AvaliationInput
связан с Profession
.
Итак, у меня есть страница, на которой перечислены все мои avaliation_inputs от конкретной профессии.
Мой контроллер (avaliations_controller.rb):
class Web::V1::Coordinator::AvaliationsController < Web::V1::WebController
layout "coordinator"
before_action :authenticate_coordinator_coordinator!
before_action :get_professions_and_types, only: [:edit, :update]
# GET
def index
# @avaliations = current_coordinator_coordinator.my_avaliations
@professions = current_coordinator_coordinator.select_institution_profession
end
# GET
def edit
@institution_profession = InstitutionProfession.find(params[:id].to_i)
@profession_name = @institution_profession.profession.name
@avaliations = @institution_profession.avaliation_inputs
end
# PATCH/PUT
def update
if AvaliationInput.find(avaliation_input_id[:id].to_i).update(avaliation_input_params)
redirect_to coordinator_avaliations_path, notice: 'Avaliação atualizada com sucesso' and return
end
render :edit
end
private
def avaliation_input_params
params.require(:avaliation_input).permit(:id, :institution_profession_id, :name, :field_type, :required)
end
def avaliation_input_id
params.require(:avaliation_input).permit(:id)
end
end
Мой взгляд (_edit_form.html.erb; он вызывается в edit.html.erb):
<div class="row">
<div class="col-sm-12 col-md-12">
<div class="form-group">
<label class="form-control-label">Profissão</label>
<h3><%= @profession_name %></h3>
</div>
</div>
<% avaliations.each do |avaliation_input| %>
<%= form_for avaliation_input, url: coordinator_avaliation_path, method: :put, namespace: "avaliation_input_#{avaliation_input.id}" do |form| %>
<% if avaliation_input.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(avaliation_input.errors.count, "error") %> proíbem a finalização:</h2>
<ul>
<% avaliation_input.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<%= form.hidden_field :institution_profession_id, value: @institution_profession.id %>
<%= form.hidden_field :id, value: avaliation_input.id %>
<div class="col-sm-12 col-md-12">
<div class="form-group">
<div class="card">
<%=Web::V1::LayoutHelper::badge_active(form.object.active)%>
<div class="card-body">
<div class="form-group">
<label class="form-control-label">Nome</label>
<%= form.text_field :name, class: "form-control", placeholder: "Nome", required: true %>
</div>
<div class="form-group">
<label class="form-control-label">Tipo do Campo</label>
<%= form.select :field_type, @types, class: "form-control" %>
</div>
<div class="form-group">
<label for="cc-payment" class="control-label mb-1">É obrigatório?</label>
<br>
<label class="switch switch-text switch-primary switch-pill">
<%= form.check_box :required, checked: form.object.required, class: "switch-input" %>
<span data-on="SIM" data-off="NÃO" class="switch-label"></span>
<span class="switch-handle"></span>
</label>
</div>
<div class="form-group">
<% unless form.object.id.nil? %>
<%=Web::V1::LayoutHelper::btn_avaliation_input_active(form.object.active, avaliation_input_active_coordinator_avaliation_path(id: form.object.id))%>
<%end%>
</div>
</div>
</div>
</div>
</div>
<% end %>
<% end %>
<div class="col-sm-12 col-md-12">
<a href="<%=add_avaliation_input_coordinator_avaliations_path(@institution_profession.id)%>" class="btn btn-lg btn-info">Adicionar Campo</a>
</div>
</div>
<br>
<div class="row">
<div class="col-sm-12">
<a onclick="sendForms()" class="btn btn-lg btn-info" style="width: 100%;">Salvar</a>
</div>
</div>
<script type="text/javascript">
var sendForms = function(){
var formsCollection = document.getElementsByTagName("form");
for(var i=0;i<formsCollection.length;i++){
formsCollection[i].submit();
}
}
</script>
Я попрошу вас, ребята, обратить внимание внизупредставление, где я перебираю все формы и отправляю каждую из них.
var formsCollection = document.getElementsByTagName("form");
for(var i=0;i<formsCollection.length;i++){
// alert(formsCollection[i].id);
formsCollection[i].submit();
}
Но, когда я делаю это, обновляется только моя последняя форма.На консоли браузера я вижу, что цикл происходит, но на консоли rails (Puma Server) я вижу только последний элемент моих форм.
Я уже пытался использовать пространство имен для своих форм.Я не могу использовать тайм-аут JavaScript, если у меня есть динамическое число форм.
Кто-нибудь знает, как решить эту проблему?