From 0bcbc2070296f1ba35b7193930622867c937e571 Mon Sep 17 00:00:00 2001 From: benji Date: Sat, 28 Mar 2015 14:36:07 +0100 Subject: [PATCH] change index of products in table view --- app/assets/stylesheets/products.css.scss | 3 +++ app/controllers/products_controller.rb | 13 +++++++------ app/models/product.rb | 2 +- app/views/products/update.js.erb | 1 + app/views/products_list/_product_row.html.erb | 9 +++++++++ app/views/products_list/listview.html.erb | 17 +++++++++++++++++ 6 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 app/views/products/update.js.erb create mode 100644 app/views/products_list/_product_row.html.erb create mode 100644 app/views/products_list/listview.html.erb diff --git a/app/assets/stylesheets/products.css.scss b/app/assets/stylesheets/products.css.scss index 9ec81e9..55739c9 100644 --- a/app/assets/stylesheets/products.css.scss +++ b/app/assets/stylesheets/products.css.scss @@ -22,3 +22,6 @@ margin-bottom: 20px; } +#products-table .form-group { + margin-bottom: 0; +} diff --git a/app/controllers/products_controller.rb b/app/controllers/products_controller.rb index 9c30afe..2af86f8 100644 --- a/app/controllers/products_controller.rb +++ b/app/controllers/products_controller.rb @@ -1,6 +1,8 @@ class ProductsController < ApplicationController load_and_authorize_resource + respond_to :html, :js + def new @product = Product.new end @@ -17,6 +19,9 @@ class ProductsController < ApplicationController def index @products = Product.all @categories = Product.categories + if current_user.admin? + render 'products_list/listview' + end end def edit @@ -25,12 +30,8 @@ class ProductsController < ApplicationController def update @product = Product.find(params[:id]) - if @product.update_attributes(product_params) - flash[:success] = "Succesfully updated product" - redirect_to products_path - else - render 'edit' - end + @product.update_attributes product_params + respond_with @product end def destroy diff --git a/app/models/product.rb b/app/models/product.rb index 2344d1c..b0ba8a1 100644 --- a/app/models/product.rb +++ b/app/models/product.rb @@ -17,7 +17,7 @@ class Product < ActiveRecord::Base has_many :order_items - has_attached_file :avatar, styles: { dagschotel: "80x80>", medium: "100x100>" }, default_style: :medium + has_attached_file :avatar, styles: { dagschotel: "80x80>", medium: "100x100>", small: "40x40>" }, default_style: :medium enum category: %w(food beverages other) diff --git a/app/views/products/update.js.erb b/app/views/products/update.js.erb new file mode 100644 index 0000000..b0694e6 --- /dev/null +++ b/app/views/products/update.js.erb @@ -0,0 +1 @@ +$("#products_row_<%= dom_id(@product) %>").replaceWith("<%= j render 'products_list/product_row', product: @product %>"); diff --git a/app/views/products_list/_product_row.html.erb b/app/views/products_list/_product_row.html.erb new file mode 100644 index 0000000..e0da8c3 --- /dev/null +++ b/app/views/products_list/_product_row.html.erb @@ -0,0 +1,9 @@ + + <%= f_form_for product, remote: true do |f| %> + <%= image_tag product.avatar(:small) %> + <%= f.text_field :name, skip_label: true %> + <%= f.price_field :price, skip_label: true %> + <%= f.number_field :stock, skip_label: true %> + <%= f.submit "Save" %> + <% end %> + diff --git a/app/views/products_list/listview.html.erb b/app/views/products_list/listview.html.erb new file mode 100644 index 0000000..47cf371 --- /dev/null +++ b/app/views/products_list/listview.html.erb @@ -0,0 +1,17 @@ +
+
+

Products

+ <%= render partial: 'flash' %> + + + + + + + + + + <%= render partial: 'products_list/product_row', collection: @products, as: :product %> +
NamePriceStock
+
+