Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如何将索引中的Ransack参数[:q]传递给同一控制器的更新操作,以维护过滤结果?_Html_Ruby On Rails_Filter_Controller_Ransack - Fatal编程技术网

Html 如何将索引中的Ransack参数[:q]传递给同一控制器的更新操作,以维护过滤结果?

Html 如何将索引中的Ransack参数[:q]传递给同一控制器的更新操作,以维护过滤结果?,html,ruby-on-rails,filter,controller,ransack,Html,Ruby On Rails,Filter,Controller,Ransack,我有一个搜索表单来过滤索引页中的发票 我必须批量编辑该搜索表单筛选的所有实例,但由于我没有将筛选器参数[:q]发送到更新到期日操作,所有帐户。正在编辑发票,而不仅仅是我在索引中筛选的发票 控制器索引和更新到期日操作 表格: 如何在更新操作中传递筛选参数以维护筛选记录?您可以尝试作为路由参数传递路径:“/action?q=“应该可以。如果您使用的是form\u,请尝试以下@hirenbalani我正在使用rails辅助方法(\u path)进行路由。我仍然可以按您建议的方式传递params[:q]

我有一个搜索表单来过滤索引页中的发票

我必须批量编辑该搜索表单筛选的所有实例,但由于我没有将筛选器
参数[:q]
发送到
更新到期日
操作,所有
帐户。正在编辑发票,而不仅仅是我在索引中筛选的发票

控制器索引和更新到期日操作

表格:


如何在更新操作中传递筛选参数以维护筛选记录?

您可以尝试作为路由参数传递<代码>路径:“/action?q=“
应该可以。如果您使用的是
form\u,请尝试以下
@hirenbalani我正在使用rails辅助方法(\u path)进行路由。我仍然可以按您建议的方式传递params[:q]吗?是的,您可以,尝试以下方式
\u path(q:{your json})
这个建议解决了问题吗?@hirenbalani我更接近解决它了!我现在看到“无法将未经许可的参数转换为哈希”,但我已经看到正确的参数[:q]被传递到控制器。我想我必须允许params[:q]?类似于def invoice_params.permit(:q)end的东西
  def index
    @search = current_account.invoices.ransack(params[:q])
    @invoices = @search.result.paginate(page: params[:page])
  end

  def update_due_date
    @search = current_account.invoices.ransack(params[:q])
    @invoices = @search.result
    
    failed_counter = 0
    @invoices.each do |invoice|
      unless invoice.update(due_date: params[:due_date][:due_date])
        failed_counter += 1
      end
    end

    if failed_counter.positive?
      flash[:danger] = "There was a problem editing the invoices"
    else
      flash[:success] = "Invoices updated correctly"
    end
    redirect_to admin_invoices_batch_edit_index_path
  end
<div>
  <%= search_form_for @search, { url: admin_invoices_batch_edit_index_path, method: :get, html: {class: "form-inline"} } do |f| %>
    <div class="form-group">
      <%= f.select :status_eq, ["scheduled", "unpaid"], { include_blank: "Estado del recibo..."}, class: "form-control gray" %>
    </div>
    <div class="form-group">
      <%= f.search_field :due_date_gteq, as: :string, placeholder: "Fecha de inicio para filtro",
                    data:{
                      controller: "flatpickr",
                      attributes:{ enableTime: false, enableSeconds: false }
                    }, class: "my-1 form-control"
                   %>
    </div>

    <div class="form-group">
      <%= f.search_field :due_date_lteq, as: :string, placeholder: "Fecha de fin para filtro",
                    data:{
                      controller: "flatpickr",
                      attributes:{ enableTime: false, enableSeconds: false }
                    }, class: "my-1 form-control"
                   %>
      <%= f.submit "Filter", class: "btn btn-primary" %>
      <%= link_to "Remove filters", admin_invoices_batch_edit_index_path, class: 'btn btn-primary' if any_filter %>
    <% end %>
    </div>

    <% if params.dig(:q, :status_eq) == "scheduled" %>
      <div class="col-md-3 m-1 p-0-important">
        <%= simple_form_for :due_date, { url: admin_invoices_batch_edit_due_date_path } do |f| %>
        <%= f.input :due_date, as: :string, placeholder: "Nueva fecha de recibo",
            input_html: { data:{
                            controller: "flatpickr",
                            attributes:{ enableTime: false, enableSeconds: false } } } %>

          <!-- passing params[:q] to edit_due_date_path ? -->
          <%= hidden_field_tag :q, params[:q] %>


          <%= f.button :submit, "Update invoices"%>
          <% end %>
      </div>
    <% end %>
</div>
"q"=>"{\"status_eq\"=>\"scheduled\", \"due_date_gteq\"=>\"\", \"due_date_lteq\"=>\"\"}"