Rails: ActiveAdmin не работает с Friendly_id

89
8

У меня ActiveAdmin настроен для управления пользователями на сайте, а Friendly_id - для чтения URL-адресов. Когда я перехожу к /admin/users, это вызывает эту ошибку:

Undefined method 'per' for #<User::FriendlyIdActiveRecordRelation:0x007fdb61a38d30>

Как friendly_id настроен в пользовательской модели:

class User < ActiveRecord::Base
#...
extend FriendlyId
friendly_id :name, use: :slugged
end

Единственный ресурс, который я смог найти для конфликта между этими двумя драгоценными камнями, - это вопрос ActiveRecord :: ReadOnlyRecord при использовании ActiveAdmin и Friendly_id, который выглядит как другая проблема, и решение не работает в моем случае. Любые предложения по устранению этого?

спросил(а) 2013-03-23T04:14:00+04:00 7 лет, 6 месяцев назад
1
Решение
57

Я понял, что на самом деле это не проблема с friendly_id но с will_paginate как упоминалось здесь https://github.com/gregbell/active_admin/issues/670. Переключение на kaminari для разбивки на страницы решает проблему для меня.

ответил(а) 2013-03-26T01:01:00+04:00 7 лет, 6 месяцев назад
56

Я смог исправить это так:

Если вы не используете аддон adders, вы должны изменить свои контроллеры администратора для моделей, которые используют FriendlyId, с чем-то похожим на следующее:


controller do
def find_resource
scoped_collection.friendly.find(params[:id])
end
end

ответил(а) 2015-07-25T16:15:00+03:00 5 лет, 2 месяца назад
40

Я также столкнулся с этой проблемой и обнаружил, что friendly_id переопределяет метод to_param, поэтому просто переопределяйте его. меня устраивает.

ActiveAdmin.register User do
before_filter do
User.class_eval do
def to_param
id.to_s
end
end
end
end

ответил(а) 2014-10-23T12:21:00+04:00 5 лет, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема