45381


`code`というカラムを持つ`Company`モデルがあり、`friendly_id`を使っています。

[code]

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

そこで`ActiveAdmin`を使い始めたのですが、何も設定しないと`friendly_id`を認識せずに間違ったインスタンスを取得してしまうので

[code]

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

として編集などの作業は問題なく行えるようになりました。  
ただこの記述を追加しても`edit`のページで表示されるパンくずリストは`friendly_id`を経由せずに無関係のものを取得してきてしまうようです。

パンくずリストも`friendly_id`を考慮して取得するにはどこにどのような記述をついかすればいいのでしょうか？

### 追記

回答が得られませんでしたので、英語版の方に同様の質問をいたしました。  
<https://stackoverflow.com/questions/51200799/breadcrumbs-list-in-activeadmin-
shows-wrong-name-when-using-friendly-id>


CC BY-SA 4.0
2018-06-16T23:48:59.303
44817
2021-04-27T14:15:34.683
2021-04-27T14:15:34.683
754
3271
question
ruby-on-rails activeadmin
ActiveAdminでfriendly_idを使っているモデルのパンくずリストが別の物を指してしまう


英語版で回答を頂いたのでこちらにも書いておきます。

`lib/active_admin/dsl.rb`に以下の記述があるので、これに従えばパンくずリストを任意に変更できます。

[code]

    # 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
    
[/code]

実際に以下のようなコードで希望する動作が確認できました。

### app/admin/companies.rb

[code]

    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
    
[/code]


CC BY-SA 4.0
2018-07-07T04:47:50.623
45381
2018-07-07T04:47:50.623
3271
44817
answer