Есть select_tag
для выбора клиента. Когда пользователь выбрал клиента, он сгенерирует дочерний флажок_из-под select_tag
.
Пользователь может выбрать клиента и установить флажок нижестоящего для обоих или только клиента.
Если пользователь выбирает только клиента, а затем выполняет поиск, он получит результаты, а значение select_tag
(параметр) также будет сохранено в теге выбора после обновления.
Но проблема в том, что если я попытаюсь получить данные как select_tag
, так и checkbox_tag
, он сгенерирует данные, но оба параметра исчезнут. Мне нужно сохранить оба параметра после результатов поиска.
это мой взгляд
.row
.col-md-3
= label_tag "Customer/Supplier Name"
= select_tag "search_customer_supplier[id]", options_from_collection_for_select(Organization.customers_and_suppliers, :id, :name, params.dig('search_customer_supplier', 'id')), class: "form-control parent_class chosen-select", id: "search_registered_customers", include_blank: true
.col-md-10.small_scale_margin-top2#check_children_wrapper.hide
= label_tag "Descendent"
= check_box_tag "organization_children", "true", params.dig('search_customer_supplier', 'organization_children')&.include?('true')
Это мой код контроллера для флажка
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
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?
customer_report = params[:search_customer_supplier].map { |k, v| "#{k}:#{v}" if v.present? }.compact
Это противоположность вашего предыдущего вопроса.
Имя параметра вашего check_box_tag
— 'organization_children'
, поэтому оно будет передано в params[:organization_children]
. Вы правильно обращаетесь к нему в контроллере, сделайте то же самое в представлении:
= check_box_tag "organization_children", "true", params[:organization_children].present?
@AnujaDx это может быть потому, что идентификатор в параметрах является строкой, а идентификатор - целым числом, попробуйте params.dig('search_customer_supplier', 'id').to_i
Я также проверяю этот метод, но он содержит только параметр флажка. Другой параметр поля выбора идет после поиска.