我试图用我的模型调用方法:
<p>
<strong>Holidays this year:</strong>
<%= Country.all_holidays_in(2014) %>
</p>
我也尝试将我的方法放在我的控制器中,但它不会起作用。 但我得到这个错误:
NoMethodError in Countries#show
Showing C:/xampp/htdocs/fluxcapacitor/app/views/countries/show.html.erb where line #15 raised:
undefined method `all_holidays_in' for Country(id: integer, name: string, countrycode: string):Class
这是我的模特:
class Country < ActiveRecord::Base
has_and_belongs_to_many :groups
validates :name, presence: true
validates :countrycode, presence: true
def all_holidays_in(y)
from = Date.civil(y,1,1)
to = Date.civil(y,12,31)
return Holidays.between(from, to, self.countrycode)
end
end
任何想法我怎么称呼它?
答案 0 :(得分:5)
def self.all_holidays_in(y) #
from = Date.civil(y,1,1) #
to = Date.civil(y,12,31) #
return Holidays.between(from, to, self.countrycode)
end
你需要通过self.method_name
使它成为一个类方法 事实上,这是行不通的,没有注意到国家代码。保持方法不变,但您需要国家/地区的实例来调用它。所以如果在你的控制器中你有
@country = Country.first
然后你可以做
@country.all_holidays_in(2014)
使用您当前的方法。