【问题标题】:Ruby On Rails: friendly_id on acts_as_taggable_on, updating slug columnRuby On Rails:acts_as_taggable_on 上的friendly_id,更新 slug 列
【发布时间】:2015-08-20 03:53:21
【问题描述】:

我想我已经按照这些 answers 正确设置了它

但是当我尝试更新现有应用程序中的 slug 列时,就像我的标签一样:

Tag.find_each(&:save)

我收到此错误:

NameError: uninitialized constant Tag

Tag 不是正确的吗?


编辑:完整的错误日志

  ActsAsTaggableOn::Tag Load (0.8ms)  SELECT  "tags".* FROM "tags"  ORDER BY "tags"."id" ASC LIMIT 1000
   (0.2ms)  BEGIN
   (0.4ms)  ROLLBACK
NoMethodError: undefined method `slugged' for #<ActsAsTaggableOn::Tag:0x007faafaefc458>
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activemodel-4.2.2/lib/active_model/attribute_methods.rb:433:in `method_missing'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/friendly_id-5.1.0/lib/friendly_id/slugged.rb:295:in `should_generate_new_friendly_id?'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/friendly_id-5.1.0/lib/friendly_id/slugged.rb:304:in `set_slug'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:432:in `block in make_lambda'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:164:in `call'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:164:in `block in halting'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:504:in `call'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:504:in `block in call'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:504:in `each'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:504:in `call'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:92:in `_run_callbacks'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/callbacks.rb:776:in `_run_validation_callbacks'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activemodel-4.2.2/lib/active_model/validations/callbacks.rb:113:in `run_validations!'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activemodel-4.2.2/lib/active_model/validations.rb:334:in `valid?'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activerecord-4.2.2/lib/active_record/validations.rb:58:in `valid?'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activerecord-4.2.2/lib/active_record/validations.rb:83:in `perform_validations'
... 20 levels...
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/railties-4.2.2/lib/rails/commands/console.rb:9:in `start'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/railties-4.2.2/lib/rails/commands/commands_tasks.rb:68:in `console'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/railties-4.2.2/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/railties-4.2.2/lib/rails/commands.rb:17:in `<top (required)>'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:274:in `require'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:274:in `block in require'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:240:in `load_dependency'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:274:in `require'
    from /Users/hellomello/sites/project_app/bin/rails:8:in `<top (required)>'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:268:in `load'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:268:in `block in load'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:240:in `load_dependency'
    from /Users/hellomello/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.2/lib/active_support/dependencies.rb:268:in `load'
    from /Users/hellomello/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from /Users/hellomello/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from -e:1:in `<main>'2.2.1 :042 > 

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 acts-as-taggable-on friendly-id


    【解决方案1】:
    NameError: uninitialized constant Tag
    

    表示环境中没有加载Tag类。

    尝试使用名称范围名称,例如:ActsAsTaggableOn::Tag(如您发布的链接),而不是仅使用 Tag。另外,看看您是否需要在某处 require act_as_taggable_on.rb 文件,以便它正确加载。当类没有正确加载时会发生此错误。

    您是否将新类添加到/lib/ 目录?然后,检查(或添加)您的 application.rb 文件中是否有类似的内容:

    config.autoload_paths += %W(#{config.root}/lib)
    

    【讨论】:

    • 我快接近了。我做了ActsAsTaggableOn::Tag.find_each(&amp;:save),但现在返回这个错误:NoMethodError: undefined method 'slugged' for #&lt;ActsAsTaggableOn::Tag:0x007faaf6472248&gt;。我将名为acts_as_taggable_on.rb 的文件添加到我的/initializers/ 文件夹中。而且我不知道 autoload_paths 是做什么的
    • 您可以将完整的错误日志粘贴到您的问题部分吗?
    • 我认为,你需要使用:Model.friendly.find 而不是Model.find
    • 你的friendly_id gem 版本是什么?
    • 您好,我更新显示错误。当我尝试更新我的 slug 列时,错误来自执行 find_each(&:save)
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 2012-06-13
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    • 2014-03-28
    • 1970-01-01
    相关资源
    最近更新 更多