如何在rails active admin中添加Attachinary输入

时间:2017-06-07 12:48:37

标签: ruby-on-rails activeadmin cloudinary

Rails Active Admin插件中添加Attachinary输入的必要步骤是什么?

1 个答案:

答案 0 :(得分:1)

从原始问题复制。

第一步:

在'app'文件夹中添加名为'inputs'的新文件夹。

在此文件夹中,创建名为'formtastic_attachinary_input.rb'的文件

并在此文件中添加以下行:

class FormtasticAttachinaryInput
  include Formtastic::Inputs::Base
  attr_reader :attachinary_options

  def to_html
    input_wrapping do
      label_html <<
      template.builder_attachinary_file_field_tag(method, @builder, { html: input_html_options })
    end
  end
end

第二步:

在'config / initializer'中创建一个名为'active_admin_cloudinary.rb'的文件

并在此文件中添加以下行:

module ActiveAdmin
  module Views
    module Pages
      class Base < Arbre::HTML::Document

        alias_method :original_build_head, :build_active_admin_head

        def build_active_admin_head
          original_build_head

          within @head do
            text_node cloudinary_js_config
          end
        end

      end
    end
  end
end

第三步:

在'app / assets / javascript'中创建名为'active_admin.js'的文件

并添加以下行:

//= require active_admin/base
//= require jquery-fileupload/vendor/jquery.ui.widget
//= require jquery-fileupload/jquery.iframe-transport
//= require jquery-fileupload/jquery.fileupload
//= require cloudinary/jquery.cloudinary
//= require attachinary
//= require attachments

第四步: 在'app / assets / javascript'中创建名为'attachments.js.coffee'的文件

并添加以下行:

jQuery ->
  $('.attachinary-input').attachinary()

如何使用它?

ActiveAdmin.register Category do
  menu priority: 3
  menu label: "Sous catégories"
  permit_params  :name, :photo, :description, :category_type_id, :id, :pos_id

  form do |f|
    f.inputs "Infos de base" do
      f.input :id
      f.input :name
      f.input :description
      f.input :category_type
      f.input :pos_id
      f.input :photo, as: :formtastic_attachinary ### THERE #### 
    end
    actions
  end

  filter :name, :as => :string
  filter :description
  filter :category_type
  filter :pos_id
end