我有一个名为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
?
答案 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,通过此代码,面包屑显示正确的公司名称。
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
也许面包屑中的父母路径有更好的实现方式。让我知道你是否知道。