Rails: ActiveAdmin не работает с Friendly_id
У меня 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, который выглядит как другая проблема, и решение не работает в моем случае. Любые предложения по устранению этого?
Я понял, что на самом деле это не проблема с friendly_id
но с will_paginate
как упоминалось здесь https://github.com/gregbell/active_admin/issues/670. Переключение на kaminari
для разбивки на страницы решает проблему для меня.
Я смог исправить это так:
Если вы не используете аддон adders, вы должны изменить свои контроллеры администратора для моделей, которые используют FriendlyId, с чем-то похожим на следующее:
controller do
def find_resource
scoped_collection.friendly.find(params[:id])
end
end
Я также столкнулся с этой проблемой и обнаружил, что 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
Еще в рубрике
- Вопросы
- Friendly-id
- Rails: ActiveAdmin не работает с Friendly_id