使用Rails 4.0
我认为我是一个小问题,我创建了一个模型Word.rb,这个模型有一个创建新Word的方法,我的问题是当我尝试使用Word.saveWord(params..)
访问此方法时返回一个未定义的方法,我展示文件以便最好地解释:
Word.rb
class Word < ActiveRecord::Base
def saveWord(*args)
args.each do |term|
@term = Word.new(:name => term,:score => 0)
@term.save
end
end
before_save :check_repeated
def check_repeated
@term = Word.find_by_name(self.name)
@term.score += 1 if @term.present?
end
我不知道是否可以从其他控制器使用此方法,因为我尝试使用我的 recipes_controller.rb :
def search
@recipes = Recipe.search(params[:term],params[:term_1],params[:term_2]) if request.get?
respond_to do |format|
format.json { render :json => @recipes,:only => [:id,:name,:rcp_img_file_name,:time] }
format.xml { render :xml => @recipes }
# render :xml => @recipes.to_xml(:include => :category)
#render :xml => @recipes
end
Word.saveWord(params[:term].to_s)
end
我给出了这个错误:
undefined method `saveWord' for #<Class:0x007feb3f09bac8>
..
Word.saveWord(params[:term].to_s)
end
请有人对我有消化吗?非常感谢。
答案 0 :(得分:1)
您已将saveWord
实现为实例方法,但您尝试将其称为类方法。
您可能需要重新实现此类方法:
def self.save_word(*args)
args.each do |term|
@term = Word.new(:name => term,:score => 0)
@term.save
end
end
我也更改了这个方法的名称,所以现在它遵循Ruby命名约定。
答案 1 :(得分:0)
您的saveWord
是一种实例方法,但您将其称为class
方法。由于您在Word
方法中实例化了一个新saveWord
,因此我假设您希望将其保留为类方法。在这种情况下,将saveWord
方法更新为实例方法,如下所示:
class Word < ActiveRecord::Base
def self.saveWord(*args)
args.each do |term|
@term = Word.new(:name => term,:score => 0)
@term.save
end
end
end