Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 Ruby类方法不工作 class Post_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 3 Ruby类方法不工作 class Post

Ruby on rails 3 Ruby类方法不工作 class Post,ruby-on-rails-3,Ruby On Rails 3,在后置控制器中 class Post < ActiveRecord::Base belongs_to :users def self.find_latest_closed Post.where("status=?",'Closed').order("updated_at DESC").limit(2) end def self.find_latest_open Post.where("status=?",'Open').order("updated_at DESC"

在后置控制器中

class Post < ActiveRecord::Base
 belongs_to :users

 def self.find_latest_closed
   Post.where("status=?",'Closed').order("updated_at DESC").limit(2)
 end

 def self.find_latest_open
   Post.where("status=?",'Open').order("updated_at DESC").limit(2)
 end
end
class UsersController
我得到以下错误

class UsersController < ApplicationController
 def dashboard
  @totalclose = Post.find_latest_closed
   @totalopen = Post.find_latest_open
 end
end
用户控制面板中的
NoMethodError
未定义的方法“查找\u最新\u关闭”#

这里怎么了?

我会尝试删除方法调用的Post前缀

NoMethodError in UsersController#dashboard
undefined method `find_latest_closed' for #<Class:0x000001074eb760>

您可能与ActiveRecord的magic
find.*
方法存在某种冲突。也许可以尝试将方法名称更改为
get.*

它在控制台中工作吗?类定义是否在models/post.rb中?此外,请检查拼写-这些错误通常是由于打字错误造成的…您应该使用范围而不是类方法(例如:
scope:two_latest_open,其中(状态:“open”)。顺序(“updated_at DESC”)。限制(2)
无论这里发生了什么,使用
scope
而不是定义自己的方法可能会更好。
scope:latest_closed,其中('status=?','closed')。order('updated_at DESC')。limit(2)
您可能与ActiveRecord的magic
find.*
方法存在某种冲突。也许可以尝试将方法名称更改为
get.*
@Historcrat是的,您是正确的。它成功了..谢谢
 def self.find_latest_closed
   where("status=?",'Closed').order("updated_at DESC").limit(2)
 end

 def self.find_latest_open
   where("status=?",'Open').order("updated_at DESC").limit(2)
 end