diff --git a/app/controllers/admin/sponsors_controller.rb b/app/controllers/admin/sponsors_controller.rb index e3431baf..ae2e3fbb 100644 --- a/app/controllers/admin/sponsors_controller.rb +++ b/app/controllers/admin/sponsors_controller.rb @@ -11,12 +11,12 @@ module Admin end def show - @sponsor.swag_index = @sponsor.swag_hash.length + @sponsor.swag_index = @sponsor.swags.length end def edit - @sponsor.swag_index = @sponsor.swag_hash.length - @sponsor.swag_hash = @sponsor.swag_hash + @sponsor.swag_index = @sponsor.swags.length + @sponsor.swags = @sponsor.swags end def new @@ -63,7 +63,7 @@ module Admin - def get_swag_hash; end + def get_swags; end def paid @sponsor.paid = !@sponsor.paid @@ -96,7 +96,7 @@ module Admin def sponsor_params params.require(:sponsor).permit(:name, :description, :website_url, :picture, :picture_cache, :sponsorship_level_id, :conference_id, - :paid, :has_swag, :swag_received, :address, :vat, :has_banner, :swag_hash, :type, :quantity, :swag_index) + :paid, :has_swag, :swag_received, :address, :vat, :has_banner, :swag_index, swags: [:type, :quantity]) end def sponsorship_level_required diff --git a/app/models/sponsor.rb b/app/models/sponsor.rb index e4be27f0..6f670740 100644 --- a/app/models/sponsor.rb +++ b/app/models/sponsor.rb @@ -2,7 +2,7 @@ class Sponsor < ActiveRecord::Base belongs_to :sponsorship_level belongs_to :conference - serialize :swag_hash, Hash + serialize :swags, Hash attr_accessor :type, :quantity, :swag_index, :hint_hash has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id } @@ -10,13 +10,4 @@ class Sponsor < ActiveRecord::Base mount_uploader :picture, PictureUploader, mount_on: :logo_file_name validates :name, :website_url, :sponsorship_level, presence: true - - def generate_swags_hash(type, quantity) - unless swag_hash - swag_hash = {} - end - - swag_hash[type.to_s] = quantity.to_i - update_attribute(:swag_hash, @sponsor.swag_hash) - end end diff --git a/app/views/admin/sponsors/_edit_form.html.haml b/app/views/admin/sponsors/_edit_form.html.haml index 1165f971..5a24f4cf 100644 --- a/app/views/admin/sponsors/_edit_form.html.haml +++ b/app/views/admin/sponsors/_edit_form.html.haml @@ -22,10 +22,9 @@ off_color: 'warning', on_text: 'Yes', off_text: 'No' } - - - @sponsor.swag_hash.each_with_index do |hash, index| - =render partial: 'swag_fields', locals: {f: f, index: index} - =render partial: 'swag_fields', locals: { f: f, index: @sponsor.swag_index} + - @sponsor.swags.each_with_index do |(key, value), index| + =render partial: 'swag_fields', locals: {f: f, index: index, v_type: value[:type].to_s, v_quantity: value[:quantity].to_i} + =render partial: 'swag_fields', locals: { f: f, index: @sponsor.swag_index, v_type: nil, v_quantity: 0} .row .col-md-8 diff --git a/app/views/admin/sponsors/_swag_fields.html.haml b/app/views/admin/sponsors/_swag_fields.html.haml index b925e0c5..5cd9d154 100644 --- a/app/views/admin/sponsors/_swag_fields.html.haml +++ b/app/views/admin/sponsors/_swag_fields.html.haml @@ -1,5 +1,5 @@ .row .col-md-6 - = f.input :type, label: 'Swag\'s type', input_html: { name: "sponsor[swag_hash][#{index}][type]"} + = f.input :type, label: 'Swag\'s type', input_html: { name: "sponsor[swags][#{index}][type]", value: v_type } .col-md-6 - = f.input :quantity, input_html: { name: "sponsor[swag_hash][#{index}][quantity]"} + = f.input :quantity, as: :number, in: 0...999, input_html: { name: "sponsor[swags][#{index}][quantity]", value: v_quantity} diff --git a/app/views/admin/sponsors/show.html.haml b/app/views/admin/sponsors/show.html.haml index abd47b3e..6cb0adf9 100644 --- a/app/views/admin/sponsors/show.html.haml +++ b/app/views/admin/sponsors/show.html.haml @@ -69,12 +69,12 @@ %b Swag's Type %td %b Quantity - %tr - - @sponsor.swag_hash.each do |key, value| + - @sponsor.swags.each do |key, value| + %tr %td.col-md-2 - = key + = value[:type] %td - = value + = value[:quantity] diff --git a/db/migrate/20170822173332_add_swags_to_sponsors.rb b/db/migrate/20170822173332_add_swags_to_sponsors.rb index 41811351..68303239 100644 --- a/db/migrate/20170822173332_add_swags_to_sponsors.rb +++ b/db/migrate/20170822173332_add_swags_to_sponsors.rb @@ -6,6 +6,6 @@ class AddSwagsToSponsors < ActiveRecord::Migration add_column :sponsors, :address, :string add_column :sponsors, :vat, :string add_column :sponsors, :has_banner, :boolean, default: false - add_column :sponsors, :swag_hash, :text + add_column :sponsors, :swags, :text end end diff --git a/db/schema.rb b/db/schema.rb index dad230b7..34f37a5f 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -469,17 +469,17 @@ ActiveRecord::Schema.define(version: 20170822173332) do t.datetime "updated_at" t.string "picture" t.boolean "payed", default: false - t.boolean "swags", default: false t.boolean "swags_received" t.string "company_address" t.string "vat_registration" + t.text "swag_hash" t.boolean "paid", default: false t.boolean "has_swag", default: false t.boolean "swag_received" t.string "address" t.string "vat" t.boolean "has_banner", default: false - t.text "swag_hash" + t.text "swags" end create_table "sponsorship_levels", force: :cascade do |t|