【问题标题】:rails4 add friendly_id has wrong undefined method `slug' forrails4 add friendly_id 有错误的未定义方法“slug”
【发布时间】:2018-10-12 12:49:18
【问题描述】:

我用过 rails4.2.8, ruby​​2.5.0, 'friendly_id', '~> 5.1.0'

当我将 friendly_id 放到 Gemfile 中时,

第一:bundle
第二:rake db:migrate
第三:在models/user.rb添加

extend FriendlyId
  friendly_id :name, use: :slugged

controllers/user_controller.rb修改如下:

def show
    # @user = User.find(params[:id])
    @user = User.friendly.find(params[:id])
    # debugger
  end

然后我rails s并创建新用户,它显示错误:

NoMethodError in UsersController#create
undefined method `slug' for #<User:0x00007f89fb2d7508>

def create
    @user = User.new(user_params) 
    if @user.save
      log_in @user
      flash[:success] = "signup success~"
      redirect_to @user

我在stackoverflow中搜索过这个错误,有人说将models/user.rb更改为

 extend FriendlyId
  friendly_id :name, :use => [:slugged, :finders]

我试过这个答案,但它也显示错误:

NoMethodError in UsersController#create
undefined method `slug' for #<User:0x00007f89fb2d7508>

我该如何解决这些问题?非常感谢您的帮助~~~

【问题讨论】:

  • 您需要将:slug 列添加到您的用户表中
  • @sovalina 感谢您的帮助,我应该如何将列 :slug 添加到我的用户表中?你能给我看看代码吗?非常感谢~~
  • 检查@a3y3 答案:)
  • 好的,也非常感谢...

标签: ruby-on-rails friendly-id


【解决方案1】:

您需要通过迁移向您的用户表中添加一个 slug 列。创建一个新的迁移: rails g migration addSlugToUsers

然后添加:

add_column :users, :slug, :string 
add_index :users, :slug, unique: true

db/migrate/xxxx.add_slug_to_users.rb

然后运行:rails db:migrate

【讨论】:

  • 嗨@a3y3,感谢您的帮助,效果很好。然后,如果你有时间,你能帮我回答其他问题吗?网址是:https://stackoverflow.com/questions/50114586/rails4-change-default-url-xxx-com-new-page-to-xxx-com-new-page-username,我也无法解决这个问题,因为我是rails的初学者。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-09
相关资源
最近更新 更多