使用Friendly_id时,ActiveAdmin中的面包屑列表显示错误的名称

问题描述 投票:0回答:3

我有一个名为

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

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

ActiveAdmin
friendly_id

ruby-on-rails activeadmin friendly-id
3个回答
7
投票

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

应用程序/管理/公司.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

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


4
投票

breadcrumb
方法定义在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
方法来根据您的喜好配置它!


0
投票

config.display_name
中将 :code 添加到
initializers/active_admin.rb
是否适合您?

© www.soinside.com 2019 - 2024. All rights reserved.