Как сохранить истинное значение многих флажков сразу после обновления страницы - PullRequest
0 голосов
/ 21 мая 2019

Поиск работает нормально. Но моя проблема в том, что когда я установил один флажок и выполнил поиск, он получит мои результаты, а также установит флажок истинное состояние. После проверки двух или более флажков он не удерживаетистинные состояния. Мне нужно держать эти истинные состояния

Моя проблема в том, что у меня есть 4 флажка.когда я установил два или более флажков одновременно, он получит мои результаты, а затем истинные состояния исчезнут. Мне нужно удерживать эти состояния, чтобы распечатать отчет после обновления страницы.

Это мое текущее представление о четырехфлажки.

.row
 .col-md-3
 = check_box_tag "search_customer_supplier[accounts_dealer_types.dealer_code][]","CUS", params[:search_customer_supplier]['accounts_dealer_types.dealer_code'] == 'CUS'
 = label_tag "Organizational Customer"
 .col-md-3
 = check_box_tag "search_customer_supplier[accounts_dealer_types.dealer_code][]", "SUP",  params[:search_customer_supplier]['accounts_dealer_types.dealer_code'] == 'SUP'
 = label_tag "Organzational Supplier"
 col-md-3
 = check_box_tag "search_customer_supplier[accounts_dealer_types.dealer_code][]", "INDCUS", params[:search_customer_supplier]['accounts_dealer_types.dealer_code'] == 'INDCUS'
 = label_tag "Individual Customer"
 .col-md-3
 = check_box_tag "search_customer_supplier[accounts_dealer_types.dealer_code][]", "INDSUP",  params[:search_customer_supplier]['accounts_dealer_types.dealer_code'] == 'INDSUP'
 = label_tag "Individual Supplier"

Это мой контроллер

 def customer_supplier_report
    Organization
    Address
    ContactNumber
    refined_query = ""
    if params[:search].present? or params[:excel_report].present?

      search_customer_supplier = params[:search_customer_supplier]
      if params[:organization_children].present? and search_customer_supplier["id"].present?
        organization_id = search_customer_supplier["id"]
        organization = Organization.find(organization_id)
        anchestor_ids = organization.anchestors.map{|o| o[:member].id }
        search_customer_supplier["id"] = "(#{anchestor_ids.join(' OR ')})" if anchestor_ids.any?
        end

      #puts "======================================================================"
      # puts params[:search_customer_supplier]['accounts_dealer_types.dealer_code']

      params[:search_customer_supplier]['accounts_dealer_types.dealer_code'] = params[:search_customer_supplier]['accounts_dealer_types.dealer_code'].join(" OR ") if params[:search_customer_supplier]['accounts_dealer_types.dealer_code'].present?

      puts params[:search_customer_supplier]['accounts_dealer_types.dealer_code']

      customer_report = params[:search_customer_supplier].map { |k, v| "#{k}:#{v}" if v.present? }.compact


    else
      customer_report = ["accounts_dealer_types.dealer_code:(CUS OR SUP OR INDCUS OR INDSUP)"]
    end

    @all_address = params[:all_address].to_bool if params[:all_address].present?
    refined_query += customer_report.join(" AND ")
    params[:query] = refined_query
    params[:per_page] = 4000
    @customer_reports = Organization.search(params)



    @account_managers = User.where(active: true)
    respond_to do |format|
      if params[:excel_report].present?
        request.format = "xls"
        format.xls { set_attachment_name "customer_supplier_report.xls" }
      else
        format.html
      end
    end

  end

1 Ответ

0 голосов
/ 21 мая 2019

Имя поля search_customer_supplier[accounts_dealer_types.dealer_code][] означает, что params[:search_customer_supplier]['accounts_dealer_types.dealer_code'] является массивом, поэтому вы должны проверить его на наличие:

check_box_tag "search_customer_supplier[accounts_dealer_types.dealer_code][]",
  "CUS",
  params.dig(:search_customer_supplier, 'accounts_dealer_types.dealer_code')&.include?('CUS')
...