ActiveAdmin 中的痕迹导航列表在使用friendly_id时显示错误的名称



我有一个名为Company的模型,它有code.该列用于friendly_id

class Company < ActiveRecord::Base
extend FriendlyId
friendly_id :code, use: :slugged
end

ActiveAdmin无法识别friendly_id,所以我不得不像这样覆盖find_resource方法:

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

使用此代码,我可以通过ActiveAdmin编辑模型属性,但是编辑页面中的痕迹导航列表显示了错误的公司名称。(即使用id,而不是code(

在哪里以及如何配置同时使用ActiveAdminfriendly_id

感谢您的@mark-merrit,通过此代码面包屑显示正确的公司名称。

app/admin/companies.rb

ActiveAdmin.register Post do
breadcrumb do
links = [link_to('Admin', admin_root_path), link_to('Companies', admin_companies_path)]
if %(show edit).include?(params['action'])
links << link_to(company.name, admin_company_path)
end
links
end
end

也许在面包屑中有一个更好的父母路径实现。如果您知道,请告诉我。

来自 ActiveAdmin 源代码,可以在 lib/active_admin/dsl.rb 中找到

# Rewrite breadcrumb links.
# Block will be executed inside controller.
# Block must return an array if you want to rewrite breadcrumb links.
#
# Example:
#   ActiveAdmin.register Post do
#     breadcrumb do
#       [
#         link_to('my piece', '/my/link/to/piece')
#       ]
#     end
#   end
#
def breadcrumb(&block)
config.breadcrumb = block
end

由于它是在控制器中执行的,因此您可以使用自定义find_resource方法根据自己的喜好对其进行配置!

initializers/active_admin.rbconfig.display_name加入 :code 对你有用吗?

相关内容

  • 没有找到相关文章

最新更新