Добавьте изображение рядом с меткой флажка в форме activeadmin - PullRequest
0 голосов
/ 10 сентября 2018

Я использую гем 'activeadmin', '~> 1.3' в приложении rails. У меня есть эти отношения между двумя моделями:

class Offer < ApplicationRecord
  has_many :products
end
class Product < ApplicationRecord
  belongs_to :offer, required: false
  has_attachments :photos, maximum: 4, dependent: :destroy
end

Я могу получить доступ к первой фотографии продукта следующим образом: @product.photos[0] или @product.photos[0].path

В admin / offer.rb, флажки для выбора продуктов, принадлежащих предложению, установлены с:

f.input :products, as: :check_boxes

Отображает список флажков с названиями продуктов в качестве меток. Теперь я хочу дополнить этот ярлык миниатюрами фотографий одного продукта рядом с ним.

Мне не удалось перебрать ": products" при построении флажков. Я хотел добавить HTML-тег, подобный этому: span img(src: "product_image_path"), как я делаю, когда я отображаю страницу продукта в activeadmin.

Я проверил документацию formtastic и нашел только эту опцию настройки: :collection => Product.pluck(:name, :id). Это позволяет мне изменять только текст в метке, но не дает мне способа добавить изображение.

Как отобразить эскиз одной из фотографий товара рядом с названием товара в форме activeadmin?

1 Ответ

0 голосов
/ 28 ноября 2018

Как указано в: формальной документации , вы можете настроить существующие входные данные. Таким образом, я создал вход checkbox_image в приложении / input / checkbox_image_input.rb:

class CheckboxImageInput < Formtastic::Inputs::CheckBoxesInput
  include CloudinaryHelper

  def choice_html(choice)
    template.content_tag(
    :label,
    img_tag(choice) + checkbox_input(choice) + choice_label(choice),
    label_html_options.merge(:for => choice_input_dom_id(choice), :class => 
    "input_with_thumbnail"))
 end

  def img_tag(choice)
    cl_image_tag(Product.find(choice[1]).photos[0].path, :width=>30, 
    :crop=>"scale")
  end
end

Я использую cloudinary в качестве службы хранения изображений, вы можете обновить img_tag (по вашему выбору). Затем вы можете использовать новый вход в admin / model.rb в форме:

f.input :products, as: :checkbox_image, :collection => product_selection

Внезапно я создал новый тег label в своем файле active_admin_custom_css.css, используя класс input_with_thumbnail.

...