rails4 add friendly_id имеет неверный неопределенный метод `slug 'для - PullRequest
0 голосов
/ 02 мая 2018

Я использовал rails 4.2.2, ruby2.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>

Как я могу решить эти вопросы? Большое спасибо за вашу помощь ~~~

1 Ответ

0 голосов
/ 02 мая 2018

Вам необходимо добавить столбец слагов в таблицу пользователей через миграцию. Создайте новую миграцию: 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

...