ActiveAdmin как украсить связанные ссылки - PullRequest
0 голосов
/ 12 ноября 2019

В ActiveAdmin я знаю, что могу использовать декораторы , такие как Draper, для подачи display_name и name, но как мне использовать декоратор для простых ссылок на ассоциации (например, auto_link (ресурс) )?

Учитывая, что у меня есть сообщение и комментарий:

# Post.rb
class Post
  has_many :comments
end

# Comment.rb
class Comment
  belongs_to :post
end
# decorators/post_decorators.rb
class PostDecorator
  def name
    "Custom Post Name ##{object.id}"
  end
end
# admin/post.rb
ActiveAdmin.register Post do
  delegate_with PostDecorator
end

# admin/comments.rb
ActiveAdmin.register Comment do
  index do
    # ...
    column :post
    # ...
  end

  show do
    default_main_content
  end
end

При просмотре области ActiveAdmin для комментариев, шоу default_main_content иcolumn :post индекса оба автоматически связываются с объектом Post, но никогда не используют декоратор.

Я увижу: Post #4 вместо Custom Post Name #4 в этих разделах.

Когда я посещаюобласть администратора, она будет отлично использовать оформленное имя.

Как получить автоматические ссылки для использования Draper во всей области администратора?

В настоящее время у меня есть def name насам объект, но это свойство отображения и его нужно переместить в декоратор.

1 Ответ

1 голос
/ 25 декабря 2019

Если вы используете Draper , вы можете использовать decorates_association, чтобы сказать одному декоратору декорировать его ассоциации. Для этого требуется, чтобы у вас был CommentDecorator.

class CommentDecorator < Draper::Decorator
  delegate_all
  decorates_association :post
end

ActiveAdmin.register Comment do
  decorate_with CommentDecorator

  ...
end
...