nil的未定义方法`parameterize':NilClass

时间:2010-04-28 23:10:36

标签: ruby-on-rails

我一直在努力做SEO友好的网址,并设法让它工作,但当我在博客上调用索引操作时,我得到一个奇怪的“未定义的方法`参数化'为nil:NilClass。”使用show方法时该方法有效。

  #model
  def to_s
    title
  end

  def to_param
    "#{id}-#{to_s.parameterize}"
  end

  #controller
  @blogs = Blog.find.all

错误的屏幕截图 http://www.freeimagehosting.net/image.php?83e76a260b.png

2 个答案:

答案 0 :(得分:7)

原来你不能在没有错误的情况下调用to_param上的title.parameterize。所以我添加了一个永久链接列,并在其上调用参数化。

#models/blog.rb
before_save :permalink

def to_param
 "#{id}-#{permalink}"
end

def permalink
 self.permalink = self.title.parameterize
end

瞧。我知道这真的很蠢。

答案 1 :(得分:0)

如果有人在Rails 5中遇到麻烦......我遗漏了#to_s部分,这很关键。

class Post < ApplicationRecord

  def to_param
    slug
  end

  def slug
    "#{id}-#{pretty_url}"
  end

  def pretty_url
    title.to_s.parameterize
  end

end