gpt4 book ai didi

ruby-on-rails - ruby rails : wrong number of arguments (0 for 1) even if provided

转载 作者:数据小太阳 更新时间:2023-10-29 08:57:07 24 4
gpt4 key购买 nike

我们继承了一个rails项目(整个都是基于elasticsearch)。因此,该应用程序列出了满足用户提供的搜索条件的所有文档。想象一个方面,一旦您选择了一个特定的日期范围,它就会为您提供当时创建的文档。

我们目前一直致力于相应地扩展其功能:

Our priority is to utilize the elastic query such that allmatched documents by that query could be multiply altered (inour case, we've been trying to hide all the documents). Then we want to send the query to appropriate rake task that would take care of it.

点击负责质量隐藏的按钮后, Controller 的创建方法被调用,从而在数据库中创建一个 mass_hiding 记录(为方便起见,我们跟踪隐藏,这将允许我们恢复质量之后的行动)。

  def create
mh = current_user.mass_hidings.build(params[:mass_hiding])
mh.save!
mass_hide(mh.query_params)
redirect_to search_documents_path(mass_hide.search_parameters)
end

def mass_hide(query)
search = factic.create_restrictions_search(MultiJson.load(query.to_json))
Resque.enqueue(Document::Jobs::HideDocuments, nil, search.to_scrollable.build_query)
end

但是,创建方法mass_hide(mh.query_params)3行一旦执行就会触发如下异常:

ArgumentError in Admin::MassHidingsController#createwrong number of arguments (0 for 1)

Full trace can be found here.

Parameters:

{"utf8"=>"✓",
"authenticity_token"=>"6mZvRcp4HJuoBWMRToA2gPec9Wv8T82hiTJQ/STf1j/sDhQ+16mBW3QkRmhqlJIHKR0kvX/kqwQh205hp6RuDg==",
"mass_hiding"=>{"serialized_query_params"=>"{}",
"description"=>"test"},
"commit"=>"Hide documents"}

此外,这里是 mass_hiding 的模式表示以及相应的模型:

schema.rb

create_table "mass_hidings", force: :cascade do |t|
t.integer "user_id"
t.text "serialized_query_params"
t.string "description"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end

ma​​ss_hiding.rb

class MassHiding < ActiveRecord::Base
attr_accessible :serialized_query_params, :description
belongs_to :user

def query_params=(params)
self.serialized_query_params = Oj.dump(params)
end

def query_params
Oj.load(self.serialized_query_params).with_indifferent_access
end

def self.find_or_initialize_by_user_and_query_params(user, query_params)
self.find_or_initialize_by_user_id_and_serialized_query_params(user.id, Oj.dump(query_params))
end
end

提前感谢您的帮助。

最佳答案

问题是你已经定义了这个辅助函数:

def mass_hide(query)

但是您使用零参数调用它。

首先你用一个参数调用它,当你说 mass_hide(mh.query_params) 时。没关系。

但是在下一行你还说了 mass_hide.search_parameters。对于 Ruby,这意味着 mass_hide().search_parameters。也许您打算编写 mh.search_parameters?我不确定。但是 mass_hide 是需要 1 个参数的方法,这就是你传递给它 0 的调用点。

希望对您有所帮助!

关于ruby-on-rails - ruby rails : wrong number of arguments (0 for 1) even if provided,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50011137/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com