我在我的Article.rb:
有一个小型的文章百科全书。class Article < ActiveRecord::Base
attr_accessible :name, :content
end
我现在想在文章中自动链接,如果我发现一篇文章中的文本与另一篇文章的名称相吻合。例如,在名为"示例一"的文章中,内容是"您还可以查看示例二以进一步阅读"。在保存"示例一"时,我想设置一个链接到文章"示例二"。我的方法是添加到Article.rb
class Article < ActiveRecord::Base
attr_accessible :name, :content
before_save :createlinks
def createlinks
@allarticles = Article.all
@allarticles.each do |article|
self.content = changelinks(self.content)
end
end
def changelinks(content)
content = content.gsub(/#{article.name}/, "<%= link_to '#{article.name}', article_path(article) %>")
end
我的articles_controller是:
def update
@article = Article.find(params[:id])
if @article.update_attributes(params[:article])
redirect_to admin_path
else
render 'edit'
end
end
但显然有一个错误指向行content = content.gsub(etc…):
articlescontroller# update中的NameError#
未定义局部变量或方法"article"我如何解决这个问题,以便它检查所有其他文章名称并为我想要保存的当前文章创建链接?
你的changelink方法不知道什么是文章变量。你必须把它作为参数传递:
def createlinks
@allarticles = Article.all
@allarticles.each do |article|
self.content = changelinks(self.content, article)
end
end
def changelinks(content, article)
content = content.gsub(/#{article.name}/, "<%= link_to '#{article.name}', article_path(article) %>")
end
但是在我看来,这种用链接代替文章名称的方法并不是最好的。