Ответ 1
Это выполнит задание в приложении /admin/user.rb:
ActiveAdmin.register User do
before_filter :only => [:show, :edit, :update, :destroy] do
@user = User.find_by_name(params[:id])
end
end
просто добавив ActiveAdmin в мое приложение, у меня возникла проблема с использованием действия show/edit/destroy, потому что моя ссылка не указывает на ID, а на имя пользователя (чтобы быть более читаемым для пользователя).
ActiveAdmin правильно создаст мою ссылку:
изменить ссылку:
http://localhost:3000/admin/users/paul/edit (where paul is the user name)
в этом случае я получаю:
Couldn't find User with ID=paul
причина, конечно, Павел не является идентификатором, а именем пользователя.
Как я могу настроить ActiveAdmin для использования find_by_name (params [: id]), как в моем приложении, для всех действий show/edit/delete.
В другой модели я получил так называемый "SID", который является сгенерированным соленым идентификатором, и я хотел бы также использовать find_by_sid (params [: id]) для других моделей.
Большое спасибо.
Приветствия..
Это выполнит задание в приложении /admin/user.rb:
ActiveAdmin.register User do
before_filter :only => [:show, :edit, :update, :destroy] do
@user = User.find_by_name(params[:id])
end
end
Существует более чистый способ сделать это:
ActiveAdmin.register User do
controller do
defaults :finder => :find_by_slug
end
end
Если вы следовали за этим railscast: http://railscasts.com/episodes/63-model-name-in-url-revised и имеют настраиваемые маршруты, вы можете исправить маршруты active_admin, поместив это в приложение /admin/user.rb:
before_filter :only => [:show, :edit, :update, :destroy] do
@user = User.find_by_slug!(params[:id])
end
Это действительно близко к тому, что показано afiah, немного отличается.