如何在页面重新加载后引用表单字段值以保留输入值?

问题描述

我有以下 simple_form_for 和日期选择器,用于按到期日过滤发票。

用户输入 start_dateend_date 并提交以过滤发票时,页面会重新加载并重置表单字段(显示“选择日期”占位符)。

如何引用这些字段的值,以便在页面重新加载时它们的值是以前选择的值? (他们现在在params)。

我尝试添加 value: f.object.start_date 选项,但似乎不起作用。

我也试过 value: params[:date_params][:start_date] 也没有成功。

  <div class="col-md-6 my-2" >
    <%= simple_form_for :date_params,{ url: admin_invoices_batch_edit_index_path,method: :get } do |f| %>
      <%= f.input :start_date,as: :string,placeholder: "Pick a start date",input_html: { data:{ controller: "flatpickr",attributes:{ enableTime: false,enableSeconds: false } } } %>

      <%= f.input :end_date,placeholder: "Pick an end date",enableSeconds: false } } } %>
      <%= f.button :submit,"Filter" %>
    <% end %>
  </div>

解决方法

在您的控制器操作中,获取参数值。

@start_date = params.has_key?(:date_params) ? params[:date_params][:start_date] : nil
@end_date = params.has_key?(:date_params) ? params[:date_params][:end_date] : nil

在您的视图中,将值添加到每个参数的 input_html

input_html: { value: @start_date ...

这将在可用时设置参数或在不可用时将它们保留为零。