首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ruby升级到3.0.0后搜索方法参数错误

ruby升级到3.0.0后搜索方法参数错误
EN

Stack Overflow用户
提问于 2021-03-23 02:32:15
回答 1查看 506关注 0票数 0

将ruby版本从2.7.2更新到3.0.0,默认搜索行为停止工作。

错误跟踪:

代码语言:javascript
复制
ArgumentError in ProductsAvailabilitiesController#index

wrong number of arguments (given 2, expected 0..1)

searchkick (4.4.4) lib/searchkick/model.rb:43:in `searchkick_search'
...

下面是简单的搜索方法,可以很好地在ruby 2.7.2上工作:

代码语言:javascript
复制
def search_method(query, page)
  search_options = {
    fields: [:name, :address, :comment],
    match: :word_middle,
    page: page,
    per_page: 10
  }

  search(query, search_options)
end

这是我的Gemfile.lock:

代码语言:javascript
复制
searchkick (4.4.4)
  activemodel (>= 5)
  elasticsearch (>= 6)
  hashie
elasticsearch (7.11.2)
  elasticsearch-api (= 7.11.2)
  elasticsearch-transport (= 7.11.2)
elasticsearch-api (7.11.2)
  multi_json
elasticsearch-transport (7.11.2)
  faraday (~> 1)
  multi_json

有没有解决这个问题的方法,还是宝石源中的一个bug?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-23 02:41:28

在ruby 3.0.0 changelog中,您将看到以下内容的更新:

位置和关键字参数分离的变化

正如您在错误跟踪中所看到的,问题在于方法searchkick_search。让我们检查一下,它是实现在搜索宝石源。它包含参数**options

代码语言:javascript
复制
 def searchkick_search(term = "*", **options, &block)

在ruby2.7.2中,散列自动转换为关键字参数。红宝石3.0.0没有。如果您想保持这种行为--在搜索方法参数中添加"**“。

只需在您的源中更改如下:

代码语言:javascript
复制
 search(query, search_options_hash)

对此:

代码语言:javascript
复制
 search(query, **search_options_hash)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66756464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档