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
相关产品推荐
相关产品推荐

