drhenner/ror_ecommerce

View on GitHub
app/controllers/admin/merchandise/wizards/shipping_categories_controller.rb

Summary

Maintainability
A
1 hr
Test Coverage
class Admin::Merchandise::Wizards::ShippingCategoriesController < Admin::Merchandise::Wizards::BaseController
  helper_method :selected?
  def index
    form_info
  end

  def create
    @shipping_category = ShippingCategory.new(allowed_params)
    if @shipping_category.save
      session[:product_wizard] ||= {}
      session[:product_wizard][:shipping_category_id] = @shipping_category.id
      flash[:notice] = "Successfully created shipping category."
      redirect_to next_form
    else
      form_info
      render :action => 'index'
    end
  end

  def update
    @shipping_category = ShippingCategory.find_by_id(params[:id])
    if @shipping_category
      session[:product_wizard] ||= {}
      session[:product_wizard][:shipping_category_id] = @shipping_category.id
      flash[:notice] = "Successfully updated shipping category."
      redirect_to next_form
    else
      form_info
      render :action => 'index'
    end
  end

  private

  def allowed_params
    params.require(:shipping_category).permit(:name)
  end

  def form_info
    @shipping_categories ||= ShippingCategory.all
    @shipping_category ||= ShippingCategory.new
  end

  def selected?(id)
    (session[:product_wizard][:shipping_category_id] && session[:product_wizard][:shipping_category_id] == id) ? 'selected' : ''
  end
end