html - 如何从链接到传递的参数中过滤特定的参数键?
问题描述
我有一个索引,用户可以通过复选框应用许多不同类型的过滤器。
每个过滤器都有一个“X”按钮来关闭过滤器,它基本上向当前link_to
的同一索引页面发出请求,但被关闭的过滤器的参数键除外。permit
params
例如:
<div class="form-group <%= 'hidden' unless params.dig(:q, "subscription_payment_type_eq").present? %>" id="subscription_payment_type_eq" data-toggle-target="objective">
<%= f.select :subscription_payment_type_eq, payment_types_selector_for_filter, { include_blank: "Forma de pago..."}, class: "form-control gray my-2 " %>
<% if params.dig(:q, "subscription_payment_type_eq").present? %>
<%= link_to admin_users_path(params: params.permit(q: [:extra_params, :address_province_eq, :subscription_status_eq, :created_at_gteq, :created_at_lteq])) do %>
<span class="dismiss-box glyphicon glyphicon-remove-circle">
<% end %>
<% end %>
</div>
<div class="form-group <%= 'hidden' unless params.dig(:q, "address_province_eq").present? %>" id="address_province_eq" data-toggle-target="objective">
<%= f.select :address_province_eq, user_provinces_selector_for_filter, { include_blank: "Provincia..."}, class: "form-control gray my-2 " %>
<% if params.dig(:q, "address_province_eq").present? %>
<%= link_to admin_users_path(params: params.permit(q: [:extra_params, :subscription_payment_type_eq, :subscription_status_eq, :created_at_gteq, :created_at_lteq])) do %>
<span class="dismiss-box glyphicon glyphicon-remove-circle">
<% end %>
<% end %>
</div>
该方法有效,但是手动将异常参数键添加到添加到索引页面的每个新过滤器非常麻烦。
有没有办法传递参数,不包括属于被关闭的过滤器的参数键?
我尝试了以下方法,但没有传递任何参数:
<% if params.dig(:q, "subscription_payment_type_eq").present? %>
<%= link_to admin_users_path(params: params[:q].except(:subscription_payment_type_eq).permit) do %>
<span class="dismiss-box glyphicon glyphicon-remove-circle">
<% end %>
<% end %>
也试过这个但是got undefined method 'exclude' for #<ActionController::Parameters:0x00007f6331b00dd8>
<%= link_to admin_users_path(params: params.exclude(:subscription_payment_type_eq).permit) do %>
解决方案
Permit 需要一个参数列表,并且由于您没有发送任何参数,因此不会将任何参数传递给您的控制器。我实际上不确定您没有 args 的呼叫许可是如何工作的。无论如何,也许你可以这样尝试:
<%= link_to admin_users_path(params: params[:q].except(:subscription_payment_type_eq.permit!)
推荐阅读
- lookup - 无字节交换的大端CRC计算
- locust - Locust RPS 值不正确#LOCUST # rpsissue
- php - 文件不会通过在 PHP 中附加文本来更新
- javascript - 如何在jspdf中的表格下添加动态文本
- django - Django 动态扩展基于类的视图
- javascript - Javascript 和 3 参数过滤器
- django - 推送到 github 以供 heroku 构建后的 Django 数据库问题
- reactjs - 如何修复 React 应用程序中 Angular Web 组件的 CSS 问题?
- pine-script - 如何使用 pine 代码在交易视图上显示背景水印
- vue.js - 如何在 vue 的故事书中显示材料设计图标