【问题标题】:NameError: uninitialized constant with FriendlyId after migration to Rails4NameError:迁移到 Rails4 后使用 FriendlyId 未初始化的常量
【发布时间】:2014-08-13 04:09:08
【问题描述】:

我刚从 3.12 迁移到 Rails4,我使用 FriendlyId,它在 Rails 3.12 中运行良好 我按照我在这里找到的说明http://richonrails.com/articles/friendlyid-and-rails-4#.U6fTOY1_v_4

所以我的 gemfile 功能:

gem 'friendly_id', '~> 5.0.0'

使用friendly_id 5.0.4

但我不断收到以下错误消息:

NameError: uninitialized constant <Classname>::FriendlyId

对于每个使用 FriendlyId 的类

我看到了这个NameError in SongsController#index uninitialized constant Song::FriendlyId 但就我而言,捆绑安装不会改变任何东西

【问题讨论】:

  • 在那之后您是否重新启动了服务器?
  • 是的,我做了,但无济于事。
  • 你有没有想过这个问题?我在添加到已经使用friendly_id 的现有应用程序的新模型上突然看到了这一点。
  • 我的extend FriendlyId 声明中有错字。
  • 不,我还没弄明白,唉......所以我无法将我的应用程序迁移到 Rails 4。

标签: ruby-on-rails-4 friendly-id


【解决方案1】:

确保在捆绑后重新启动控制台。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,就我而言,我忘记了这一步:

    # Change User.find to User.friendly.find in your controller
    User.friendly.find(params[:id])
    

    【讨论】:

      【解决方案3】:

      没有看到你的代码就不能完全确定,但你需要将extend FriendlyId 添加到你的模型中。

      class Song < ActiveRecord::Base
        extend FriendlyId
        friendly_id :foo, use [:slugged, :finders]
      end
      

      在此示例中,:foo 是您希望 friendly_id 用于创建唯一 slug 的属性。

      【讨论】:

      • 我的代码在我的 Client 模型中与您的代码相同,除了它使用:(带有 :) 然后在我的 Product 模型中,我有:extend FriendlyId friendly_id :foo, :use => :scoped , :scope => :client (在 Rails 3 中运行良好)
      • 您是否尝试删除“:”?我会尝试准确匹配他们在文档中的内容。我相信对于 extend 方法,使用冒号是无效的语法。
      • 是的,我做到了,它生成:语法错误,意外 [,期待关键字_do 或 '{' 或 '('friendly_id :code,使用 [:slugged, :finders]
      • 此外,语法 use: [:slugged, :finders] 完全有效,并且在 Rails 3 中运行良好
      • 我将其更改为 : , :use => [:slugged, :finders] (如文档中所述),但我仍然收到相同的错误消息:NameError: uninitialized constant FriendlyId
      【解决方案4】:

      我在使用 Rails 4 时遇到了同样的问题 - 我通过重新启动 spring 解决了这个问题:

      $ spring stop
      

      我再次运行控制台,它又恢复了工作。

      【讨论】:

      • 如果你不使用 spring,你可以重启你的 rails 服务器,你应该没问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-19
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多