You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails应用Dashboard控制器报错:参数数量不符(给定1,预期0)

Rails参数错误wrong number of arguments(given 1, expected 0)解决方案

错误原因

你的TweetPresenter类里的构造方法命名错误——Ruby的构造方法必须是全小写的initialize,而你写成了首字母大写的Initialize。这导致Ruby会调用默认的无参构造方法,当你执行TweetPresenter.new(tweet)传入1个参数时,就会触发参数不匹配的错误。

修正代码

修改TweetPresenter的构造方法,将首字母大写的Initialize改为全小写的initialize:

class TweetPresenter
include ActionView::Helpers::DateHelper

  def initialize(tweet)
    @tweet = tweet
  end

  attr_reader :tweet

  delegate :user, :body, to: :tweet

  def created_at
    if(Time.zone.now - tweet.created_at) > 1.day
      tweet.created_at.strftime("%b %-d")
    else
      time_ago_in_words(tweet.created_at)
    end
  end

end

补充说明

Ruby是大小写敏感的语言,类名遵循首字母大写的约定,但方法名必须以小写开头,构造方法的固定名称是initialize,不能写错大小写。修正后,TweetPresenter.new(tweet)就能正确接收tweet参数完成初始化,后续视图调用Presenter的方法也能正常工作。

内容的提问来源于stack exchange,提问作者German

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 21:34:56