-1

我的 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 中的 NameError#update 未定义的局部变量或方法 `article' for #

我该如何解决这个问题,以便它检查所有其他文章名称并为我要保存的当前文章创建链接?

4

1 回答 1

0

您的 changelink 方法不“知道”什么是 article 变量。您必须将其作为参数传递:

  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

但是这种实现链接而不是文章名称的方式在我看来并不是最好的。

于 2013-01-21T14:48:52.577 回答