【问题标题】:undefined method `parameterize' for nil:NilClassnil:NilClass 的未定义方法“参数化”
【发布时间】:2017-01-18 05:47:17
【问题描述】:

我一直在尝试做 SEO 友好的 url,并设法让它工作,但是当我在博客上调用 index 操作时,我得到一个奇怪的“nil:NilClass 的未定义方法 `parameterize'”。该方法在使用 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

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    原来你不能在 to_param 上调用 title.parameterize 而不会出错。所以我添加了一个永久链接列并在其上调用参数化。

    #models/blog.rb
    before_save :permalink
    
    def to_param
     "#{id}-#{permalink}"
    end
    
    def permalink
     self.permalink = self.title.parameterize
    end
    

    然后瞧。我知道这很愚蠢。

    【讨论】:

      【解决方案2】:

      如果有人在 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-27
        • 2013-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多