Список крошек в ActiveAdmin показывает неправильное имя при использовании friendly_id - PullRequest
0 голосов
/ 06 июля 2018

У меня есть модель с именем 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?

Ответы [ 3 ]

0 голосов
/ 06 июля 2018

Работает ли предоплата: код для config.display_name в initializers/active_admin.rb работает для вас?

0 голосов
/ 07 июля 2018

Спасибо за @ mark-merrit, этим кодом хлебные крошки показывают правильное название компании.

приложение / администратор / 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

Может быть, есть лучшая реализация родительского пути в панировочных сухарях. Дайте мне знать, если вы знаете об этом.

0 голосов
/ 06 июля 2018

Из исходного кода 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, чтобы настроить его по своему вкусу!

...