在 Rails3.2 的视图中使用 class 方法时出错
error using class method in views in Rails3.2
我有一个可以包含多个 Beta 的 Alpha。我只想过滤还不包含任何 Beta 的 Alpha(因此是空的 Alpha)。所以我在 Alpha 中创建了一个 class 方法,并尝试在 Beta 视图中的表单中使用它。
class Beta
belongs_to :alpha
end
class Alpha
has_many :betas
def _empty
return self if self.betas.nil?
end
end
#views/betas/form.haml:
=simple_form_for @beta do |f|
f.association :alpha, collection: Alpha._empty
这是我得到的错误:
undefined method '_empty' for #Class:0x0000000551ae50
看来我缺少一些基本知识,如果有任何帮助,我将不胜感激!
_empty 是一个实例方法并将 return 当前实例的值,但它不是适用于 Alpha
的全局方法
因此您可能想要添加一个 class 方法...
def self._empty
Alpha.includes(:betas).where( :betas => { :alpha_id => nil } )
end
请注意,至少有两种方法可以定义 class 方法...在方法名称中使用 self
...
def self._empty
...或...
class Alpha
class << self
def _empty
...
end
end
end
只需简单地定义方法即可使其成为实例方法(例如@my_alpha._empty
)
我有一个可以包含多个 Beta 的 Alpha。我只想过滤还不包含任何 Beta 的 Alpha(因此是空的 Alpha)。所以我在 Alpha 中创建了一个 class 方法,并尝试在 Beta 视图中的表单中使用它。
class Beta
belongs_to :alpha
end
class Alpha
has_many :betas
def _empty
return self if self.betas.nil?
end
end
#views/betas/form.haml:
=simple_form_for @beta do |f|
f.association :alpha, collection: Alpha._empty
这是我得到的错误:
undefined method '_empty' for #Class:0x0000000551ae50
看来我缺少一些基本知识,如果有任何帮助,我将不胜感激!
_empty 是一个实例方法并将 return 当前实例的值,但它不是适用于 Alpha
因此您可能想要添加一个 class 方法...
def self._empty
Alpha.includes(:betas).where( :betas => { :alpha_id => nil } )
end
请注意,至少有两种方法可以定义 class 方法...在方法名称中使用 self
...
def self._empty
...或...
class Alpha
class << self
def _empty
...
end
end
end
只需简单地定义方法即可使其成为实例方法(例如@my_alpha._empty
)