ruby-on-rails - 如何自定义 Kaminari URL 以仅包含某些参数?
问题描述
我目前在我的项目中使用 kaminari 进行分页。生成的 url 除了页面参数之外还包含其他参数。
例如,我使用以下内容来生成我的下一页 url:
path_to_next_page(items, params: params)
这给了我如下信息:
/items?param1=value1&page=1
但是,我只希望页面参数可见,而不是其他参数:
/items?page=1
我尝试了以下代码,但它仍然为我提供了包含所有参数的 URL:
path_to_next_page(items, params: {page: params['page']})
我也经历了这个问题,并为各个页面链接尝试了以下操作:
paginate items, params: {page: params['page']}
但是,这也会生成包含所有参数的 URL。
有什么方法可以生成仅存在页面参数的 URL?
解决方案
分页的正常用例是您确实需要所有其他参数(您想要相同结果的第 n 页),这就是为什么在请求中删除其他参数有点困难的原因。
您传递给paginate
调用的参数将合并到当前页面参数中以生成链接。这意味着如果您知道参数的名称,您可以通过将其值设置为 nil 来删除参数,例如
= paginate @items, params: { param1: nil }
如果您想从分页链接中删除所有参数,您可以以编程方式执行此操作,但您需要小心“特殊”参数,例如,您可能想忽略:controller
和:action
。例如
# Get a list of params we want to nullify
params_to_remove = params.keys.select { |param| ![:action, :controller, :page].include?(params) }
# Create a hash of those params mapped to nil
paging_params = params_to_remove.inject({}) { |param, hsh| hsh[param] = nil; hsh }
= paginate @items, params: paging_params
推荐阅读
- r - 具有 NA 值的热图
- c# - SmtpClient Send(Mail) 函数超时错误
- python-3.x - 如何将我从列表中抓取的数据导出到我的 csv 文件?
- apache-spark - 带有 Hive 的 pyspark,追加将添加到现有分区并重复数据
- java - 使用 Eclipse Debugger 调试 Eclipse CDT 时出现奇怪的行为
- python - 我应该怎么做才能读取 dbf 文件并将数据插入 Oracle db?
- apache-kafka - 创建和使用自定义 kafka 连接配置提供程序
- java-8 - 使用 OAuth 2.0 URL 生成令牌时,如何配置 SwaggerUI 以正确设置标头上的承载令牌?
- java - 在 Spring Boot 中从 id 令牌获取主题
- android - 如何根据设置的主题更改颤动中的状态栏图标和文本颜色?