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

时间:2018-07-05 22:41:07

标签: ruby-on-rails 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

3 个答案:

答案 0 :(得分:1)

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

str

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

答案 1 :(得分:0)

config.display_name中的initializers/active_admin.rb前面加上:code对您有用吗?

答案 2 :(得分:0)

感谢@ 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

也许面包屑中的父母路径有更好的实现方式。让我知道你是否知道。