Skip to content

Instantly share code, notes, and snippets.

@esparkman
Created May 19, 2016 00:51
Show Gist options
  • Save esparkman/6feee0a4d3f7a4f4ee7429765abf91fd to your computer and use it in GitHub Desktop.
Save esparkman/6feee0a4d3f7a4f4ee7429765abf91fd to your computer and use it in GitHub Desktop.
module Admin
class VehiclesController < Admin::ApplicationController
# To customize the behavior of this controller,
# simply overwrite any of the RESTful actions. For example:
#
# def index
# super
# @resources = Vehicle.all.paginate(10, params[:page])
# end
# Define a custom finder by overriding the `find_resource` method:
# def find_resource(param)
# Vehicle.find_by!(slug: param)
# end
# See https://administrate-docs.herokuapp.com/customizing_controller_actions
# for more information
expose(:vehicle, attributes: :vehicle_params)
expose(:vehicles) { Vehicle.order(:make).page params[:page] }
private
# Use strong_parameters for attribute whitelisting
# Be sure to update your create() and update() controller methods.
def vehicle_params
params.require(:vehicle).permit(:vehicle_photo)
end
end
end
Started PATCH "/admin/vehicles/1" for ::1 at 2016-05-18 15:39:35 -0400
Processing by Admin::VehiclesController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"wWCyW6/HhoYOxYEMjMr0XsOvYLtda2HERxIXbTbf9HbF4MDRBwFzI6NV5GwXMbLpS1XOoLYdHZtJthjzi4THrQ==", "vehicle"=>{"make"=>"Dodge", "model"=>"RAM 1500", "trim"=>"", "year"=>"", "price"=>"27500", "vin"=>"", "doors"=>"", "color"=>"", "int_color"=>"", "ext_color"=>"", "description"=>"", "sold"=>"0", "used"=>"0", "new"=>"0", "warranty"=>"0", "warranty_type"=>"", "featured"=>"1", "vehicle_photo"=>[#<ActionDispatch::Http::UploadedFile:0x007fcc0a31b2e8 @tempfile=#<Tempfile:/var/folders/gp/m0w644rs1f3gmrz11r5ymx3m0000gn/T/RackMultipart20160518-41740-zstbj.jpg>, @original_filename="IMG_0263.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"vehicle[vehicle_photo][]\"; filename=\"IMG_0263.jpg\"\r\nContent-Type: image/jpeg\r\n">]}, "commit"=>"Update Vehicle", "id"=>"1"}
Vehicle Load (0.4ms) SELECT "vehicles".* FROM "vehicles" WHERE "vehicles"."id" = $1 LIMIT 1 [["id", 1]]
Unpermitted parameter: vehicle_photo
(0.2ms) BEGIN
(0.2ms) ROLLBACK
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/fields/string/_form.html.erb (0.8ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/fields/string/_form.html.erb (0.5ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/fields/string/_form.html.erb (0.4ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/fields/string/_form.html.erb (0.4ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/fields/number/_form.html.erb (0.6ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/fields/string/_form.html.erb (0.4ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/fields/string/_form.html.erb (0.4ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/fields/string/_form.html.erb (0.5ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/fields/string/_form.html.erb (0.9ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/fields/string/_form.html.erb (0.9ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/fields/text/_form.html.erb (0.5ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/fields/boolean/_form.html.erb (0.7ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/fields/boolean/_form.html.erb (0.5ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/fields/boolean/_form.html.erb (0.6ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/fields/boolean/_form.html.erb (0.4ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/fields/string/_form.html.erb (0.6ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/fields/boolean/_form.html.erb (0.3ms)
Rendered fields/photo_field/_form.html.erb (0.4ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/administrate/application/_form.html.erb (83.7ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/administrate/application/edit.html.erb within layouts/administrate/application (105.3ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/administrate/application/_sidebar.html.erb (1.7ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/administrate/application/_flashes.html.erb (0.1ms)
Rendered /Users/evansparkman/.rvm/gems/ruby-2.3.1@easylot/gems/administrate-0.2.0/app/views/administrate/application/_javascript.html.erb (24.4ms)
Completed 200 OK in 233ms (Views: 227.2ms | ActiveRecord: 0.8ms)
require "administrate/field/base"
class PhotoField < Administrate::Field::Base
def to_s
data
end
end
class Vehicle < ActiveRecord::Base
has_attached_file :vehicle_photo,
whiny_thumbnails: true,
default_url: '/:class/:attachment/missing.png',
url: '/assets/:style_:basename.:extension',
path: ':rails_root/public/assets/:style_:basename.:extension',
styles: {
thumb: '100x100',
large: '770x500'
}
validates_attachment_content_type :vehicle_photo,
content_type: %r{/\Aimage\/.*\Z/}
validates_attachment_presence :vehicle_photo
validates_attachment_size :vehicle_photo, less_than: 5.megabytes
end
require 'administrate/base_dashboard'
class VehicleDashboard < Administrate::BaseDashboard
# ATTRIBUTE_TYPES
# a hash that describes the type of each of the model's fields.
#
# Each different type represents an Administrate::Field object,
# which determines how the attribute is displayed
# on pages throughout the dashboard.
ATTRIBUTE_TYPES = {
id: Field::Number,
make: Field::String,
model: Field::String,
trim: Field::String,
year: Field::String,
price: Field::Number.with_options(
prefix: '$',
multipler: 0.01,
decimals: 2
),
vin: Field::String,
doors: Field::String,
color: Field::String,
int_color: Field::String,
ext_color: Field::String,
description: Field::Text,
sold: Field::Boolean,
used: Field::Boolean,
new: Field::Boolean,
warranty: Field::Boolean,
warranty_type: Field::String,
created_at: Field::DateTime,
updated_at: Field::DateTime,
featured: Field::Boolean,
vehicle_photo: PhotoField
}.freeze
# COLLECTION_ATTRIBUTES
# an array of attributes that will be displayed on the model's index page.
#
# By default, it's limited to four items to reduce clutter on index pages.
# Feel free to add, remove, or rearrange items.
COLLECTION_ATTRIBUTES = [
:id,
:make,
:model,
:trim,
:price
].freeze
# SHOW_PAGE_ATTRIBUTES
# an array of attributes that will be displayed on the model's show page.
SHOW_PAGE_ATTRIBUTES = [
:id,
:make,
:model,
:trim,
:year,
:price,
:vin,
:doors,
:color,
:int_color,
:ext_color,
:description,
:sold,
:used,
:new,
:warranty,
:warranty_type,
:created_at,
:updated_at,
:featured
].freeze
# FORM_ATTRIBUTES
# an array of attributes that will be displayed
# on the model's form (`new` and `edit`) pages.
FORM_ATTRIBUTES = [
:make,
:model,
:trim,
:year,
:price,
:vin,
:doors,
:color,
:int_color,
:ext_color,
:description,
:sold,
:used,
:new,
:warranty,
:warranty_type,
:featured,
:vehicle_photo
].freeze
# Overwrite this method to customize how vehicles are displayed
# across all pages of the admin dashboard.
#
def display_resource(vehicle)
"Vehicle $#{vehicle.price} - #{vehicle.make} #{vehicle.model}"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment