/ample_assets

Drag and drop file management for Rails.

Primary LanguageRubyMIT LicenseMIT

Ample Assets

AmpleAssets is a mountable engine that provides drag & drop file-management for Rails 3.2 applications.

Example Usage

Add the following to your Gemfile and bundle…

gem 'ample_assets', :git => 'https://github.com/ample/ample_assets.git'

Run the generator to copy over the necessary migrations…

rails g ample_assets:install

You’ll need to create a foreign_key on the model with which you plan to integrate AmpleAssets. For the purposes of this example, let’s assume your model is named Post

rails g migration add_file_id_to_posts file_id:integer

Now you’re ready to migrate…

rake db:migrate

Add the following plugin to your model…

class Post < ActiveRecord::Base
  ...
  has_asset
  ...
end

In both of your manifest files (stylesheets & javascripts) require ample_assets, for example…

/**
 *= require ample_assets
 */

Add the engine to your app’s routes.rb file…

mount AmpleAssets::Engine => "/ample_assets", :as => "ample_assets"

To invoke the asset toolbar, include the following in any view…

<%= assets_toolbar %>

To invoke a new drop_target, include the following within a form attached to your model…

<%= form_for current_page do |f| %>
  <%= f.asset_drop(:file_id) %>
<% end %>

Configuration

AmpleAssets.configure do |config|
  config.mount_at = YOUR PATH PREFIX
end

If your model’s attribute is named something different, you can still create the association by passing a symbol to the has_asset plugin, like so…

class YourModel < ActiveRecord::Base
  ...
  has_asset :some_attr
  ...
end

Now you can invoke a drop target for your unique attribute like this…

<%= form_for @object do |f| %>
  <%= asset_drop(:your_model, :some_attr_id, :object => f.object.some_attr) %>
<% end %>