复选框状态控制-最佳选项?(javascript/jquery、数据库或其他)
我正试图找到实施解决方案的最佳方法,我想听听你对此的看法 我有一个表单rails-simpleform和几个字段。其中一些字段有一个关联的复选框。复选框的用法很简单:如果用户希望将字段留空,则数据可能丢失,他需要选中复选框,这是为了确保他将字段留空 现在我用javascript和jquery验证控制复选框。对于我在模型上使用的字段,进行以下验证复选框状态控制-最佳选项?(javascript/jquery、数据库或其他),javascript,jquery,ruby-on-rails,checkbox,Javascript,Jquery,Ruby On Rails,Checkbox,我正试图找到实施解决方案的最佳方法,我想听听你对此的看法 我有一个表单rails-simpleform和几个字段。其中一些字段有一个关联的复选框。复选框的用法很简单:如果用户希望将字段留空,则数据可能丢失,他需要选中复选框,这是为了确保他将字段留空 现在我用javascript和jquery验证控制复选框。对于我在模型上使用的字段,进行以下验证 validates :field, acceptance: true, :unless => :field? 这是有效的,除非用户忘记输入一些数
validates :field, acceptance: true, :unless => :field?
这是有效的,除非用户忘记输入一些数据,rails抛出一些错误,例如:字段必须被接受,然后页面刷新,复选框状态丢失
为了在编辑或更新操作中控制这一点,我在文档加载时运行了一个脚本,该脚本检查字段的内容是否为空,如果为空,则表示应选中该复选框
除此之外,当出现错误并刷新页面时,新建或创建操作也不起作用
所以我在寻找更好的解决方案。。。我应该使用jquery.cookie之类的东西并将复选框状态存储在cookie上吗?我是否应该将所有复选框添加到数据库并以这种方式控制状态?我不喜欢用巨大的表来控制数据库中的一切。。。我应该将状态作为参数传递到表单上吗
您对实现这一目标的最佳解决方案有何想法
--更新--
以下是控制器代码:
respond_to do |format|
if @sample.save
format.html { redirect_to @sample, notice: 'Sample was successfully created.' }
format.json { render json: @sample, status: :created, location: @sample }
else
format.html { render action: "new" }
format.json { render json: @sample.errors, status: :unprocessable_entity }
end
end
在这方面:
<% if @sample.errors.any? %>
<div id="error_explanation" class="field_with_errors">
<h3>Não foi possível gravar o registo. Erro(s) encontrado(s): <%= pluralize(@sample.errors.count, "erro") %></h3>
<ul>
<% @sample.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
形式
听起来您在控制器中所做的事情与Rails颗粒相反。如果您在控制器的else中使用@resource来响应_,那么您应该会看到一个页面重新加载,其中包含内联呈现的错误,并记住除密码以外的信息。它看起来确实正确。@sample的另一个非密码信息还在吗?还有,你能把你的表格放上去吗?最后,能否尝试删除验证中的除非::字段部分?是的,其余字段仍然存在。只有复选框失去了它们的状态。我也尝试了不使用除非::字段,但行为是一样的
<%= simple_form_for @sample, :html => { :class => 'form-horizontal' } do |f| %>
<!-- Error messages while saving-->
<% if @sample.errors.any? %>
<div id="error_explanation" class="field_with_errors">
<h3>Não foi possível gravar o registo. Erro(s) encontrado(s): <%= pluralize(@sample.errors.count, "erro") %></h3>
<ul>
<% @sample.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<br>
<!-- end of error messages -->
<div class="row">
<div class="span4">
<fieldset>
<legend>Detalhes da Informação</legend>
<div class="control-group">
<%= f.label :pcris, "PCR Anterior?", :class => 'control-label' %>
<div class="controls">
<%= f.select :pcris, NAOPREENCHIDO, :include_blank => true %>
</div>
</div>
<div class="resultpcr control-group">
<%#= f.label :resultFirstTest, "Res. PCR Anterior", :class => 'control-label' %>
<div class="controls">
<%#= f.select :resultFirstTest, RESULTADO, :include_blank => true, :id => 'result_first_test' %>
</div>
</div>
<div class="control-group">
<%= f.label :colheitaPCR, "Colheita de PCR", :class => 'control-label' %>
<div class="controls">
<%= f.select :colheitaPCR, COLHEITA_PCR, :include_blank => true %>
</div>
</div>
<div class="control-group">
<%= f.label :dateOfSample, "Data de Colheita", :class => 'control-label' %>
<div class="controls">
<%= f.text_field :dateOfSample, :class => 'date_field' %><input type="checkbox" name="dtc" id="dtc_nao_preenchido">nao preenchido<br>
</div>
</div>
<div class="control-group">
<%= f.label :horaColheita, "Hora de Colheita", :class => 'control-label' %>
<div class="controls">
<%= f.text_field :horaColheita, :class => 'time_field' %><input type="checkbox" name="hc" id="hc_nao_preenchido">nao preenchido<br>
</div>
</div>
<div class="control-group">
<%= f.label :dateSampleSent, "Data de Envio da U.S.", :class => 'control-label' %>
<div class="controls">
<%= f.text_field :dateSampleSent, :class => 'date_field' %><input type="checkbox" name="dtss" id="dtss_nao_preenchido">nao preenchido<br>
</div>
</div>
<div class="dateSampleReceived control-group">
<%= f.label :dateSampleReceived, "Data de Entrada no Lab", :class => 'control-label' %>
<div class="controls">
<%= f.text_field :dateSampleReceived, :class => 'date_field' %><input type="checkbox" name="dtsr" id="dtsr_nao_preenchido">nao preenchido<br>
</div>
</div>
<div class="control-group">
<%= f.label :sampleReceivedBy, "Amostra recebida por", :class => 'control-label' %>
<div class="controls">
<%= f.text_field :sampleReceivedBy, :class => 'text_field' %>
</div>
</div>
<div class="control-group">
<%= f.label :motherPMTCT, "PTV da Mãe", :class => 'control-label' %>
<div class="controls">
<%= f.select :motherPMTCT, MOTHER_PMTCT, :include_blank => true %>
</div>
</div>
<div class="control-group">
<%= f.label :infantPMTCT, "PTV da Criança", :class => 'control-label' %>
<div class="controls">
<%= f.select :infantPMTCT, INFANT_PMTCT, :include_blank => true %>
</div>
</div>
<div class="control-group">
<%= f.label :semanasPMTCT, "Quantas Semanas", :class => 'control-label' %>
<div class="controls">
<%= f.select :semanasPMTCT, SEMANAS_PMTCT, :include_blank => true %>
</div>
</div>
</fieldset>
</div>
</div>
<div class="form-actions">
<button type="submit" class="btn btn-eid">
<i class="fa fa-check"> Gravar FSR</i>
</button>
<%= link_to '<i class="fa fa-times"> Cancelar</i>'.html_safe,
samples_path, :class => 'btn btn-danger' %>
</div>
<% end %>