繁体   English   中英

Ruby ArgumentError:arguments 的错误编号(给定 2,预期 0..1)

[英]Ruby ArgumentError: wrong number of arguments (given 2, expected 0..1)

当我尝试使用GET /lecture_events/1调用我的 api 时,我一直面临这个错误。 错误是

ArgumentError (wrong number of arguments (given 2, expected 0..1)):
  
app/controllers/lecture_events_controller.rb:46:in `set_lecture_event'

这是我的 lecture_events controller 代码

class LectureEventsController < ApplicationController
  before_action :set_lecture_event, only: [:show, :update, :destroy]

  # GET /lecture_events
  def index
    @lecture_events = LectureEvent.all

    render json: @lecture_events
  end

  # GET /lecture_events/1
  def show
    @lecture_event = LectureEvent.find(params[:id])
    render json: @lecture_event
  end

  # POST /lecture_events
  def create
    @lecture_event = LectureEvent.new(lecture_event_params)

    if @lecture_event.save
      render json: @lecture_event, status: :created, location: @lecture_event
    else
      render json: @lecture_event.errors, status: :unprocessable_entity
    end
  end

  # PATCH/PUT /lecture_events/1
  def update
    if @lecture_event.update(lecture_event_params)
      render json: @lecture_event
    else
      render json: @lecture_event.errors, status: :unprocessable_entity
    end
  end

  # DELETE /lecture_events/1
  def destroy
    @lecture_event = LectureEvent.find(params[:userID])
    @lecture_event.destroy
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_lecture_event
      @lecture_event = LectureEvent.find(params[:id])
    end

    # Only allow a list of trusted parameters through.
    def lecture_event_params
      params.require(:lecture_event).permit(:timestamp, :eventType, :lectureID, :userID)
    end
end

我一直在尝试调试有问题的 function,但在阅读文档后,我很确定这就是调用modelName.find()的方式。 我尝试传入一个字符串而不是params ,但它仍然会引发相同的错误。

有谁知道它可能有什么问题?

我的 rails 版本是6.1.4 Ruby 是3.0.2和 mongoid 是7.0.5

编辑:这是我的LectureEvent model 代码

class LectureEvent
  include Mongoid::Document
  field :timestamp, type: Date
  field :event_type, type: String
  field :lecture_id, type: String
  field :user_id, type: String
end

以及完整的堆栈跟踪(如果需要) StackTrace

EDIT2:将"asd"更改为正确的参数值

更新:

您的 mongoid/i18n 版本不支持 ruby 3.

i18n表示您需要使用关键字 arguments 为 ruby 调用 I18n I18n::translate translate 3,但mongoid正在使用 hash 调用I18n::translate 。看起来这在最新的 mongoid 版本中已修复,因此我建议升级到 7.3.4。

注意:当发现LectureEvent时,您没有看到此错误,因为在这种情况下不需要翻译任何错误。

我想我找到了答案。 我刚刚检查了我的收藏,里面没有任何文件。 因此,我创建了一个虚拟文档并使用该文档的 ID 调用了 api,它起作用了,但是当我发送一个虚拟 ID 时,它仍然抛出了这个错误。

我现在唯一的问题是 ruby 不应该只是告诉我没有找到有问题的文档而不是这个参数错误吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM