ruby on rails -多个gsub在一个循环中



我在我的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

但是在我看来,这种用链接代替文章名称的方法并不是最好的。

相关内容

  • 没有找到相关文章

最新更新