/api/app/controllers/spree/api/taxons_controller.rb

https://github.com/joshnuss/spree-1 · Ruby · 76 lines · 63 code · 13 blank · 0 comment · 6 complexity · dba9ceca0247036fce20be34d39b4804 MD5 · raw file

  1. module Spree
  2. module Api
  3. class TaxonsController < Spree::Api::BaseController
  4. def index
  5. if taxonomy
  6. @taxons = taxonomy.root.children
  7. else
  8. if params[:ids]
  9. @taxons = Taxon.accessible_by(current_ability, :read).where(:id => params[:ids].split(","))
  10. else
  11. @taxons = Taxon.accessible_by(current_ability, :read).ransack(params[:q]).result
  12. end
  13. end
  14. respond_with(@taxons)
  15. end
  16. def show
  17. @taxon = taxon
  18. respond_with(@taxon)
  19. end
  20. def jstree
  21. show
  22. end
  23. def create
  24. authorize! :create, Taxon
  25. @taxon = Taxon.new(params[:taxon])
  26. @taxon.taxonomy_id = params[:taxonomy_id]
  27. taxonomy = Taxonomy.find_by_id(params[:taxonomy_id])
  28. if taxonomy.nil?
  29. @taxon.errors[:taxonomy_id] = I18n.t(:invalid_taxonomy_id, :scope => 'spree.api')
  30. invalid_resource!(@taxon) and return
  31. end
  32. @taxon.parent_id = taxonomy.root.id unless params[:taxon][:parent_id]
  33. if @taxon.save
  34. respond_with(@taxon, :status => 201, :default_template => :show)
  35. else
  36. invalid_resource!(@taxon)
  37. end
  38. end
  39. def update
  40. authorize! :update, taxon
  41. if taxon.update_attributes(params[:taxon])
  42. respond_with(taxon, :status => 200, :default_template => :show)
  43. else
  44. invalid_resource!(taxon)
  45. end
  46. end
  47. def destroy
  48. authorize! :destroy, taxon
  49. taxon.destroy
  50. respond_with(taxon, :status => 204)
  51. end
  52. private
  53. def taxonomy
  54. if params[:taxonomy_id].present?
  55. @taxonomy ||= Taxonomy.accessible_by(current_ability, :read).find(params[:taxonomy_id])
  56. end
  57. end
  58. def taxon
  59. @taxon ||= taxonomy.taxons.accessible_by(current_ability, :read).find(params[:id])
  60. end
  61. end
  62. end
  63. end