Sha256: d7f0a7b77e836a49ad65fed7337c0b6122b74e4662393609e6e797a0c2a81f85
Contents?: true
Size: 1.58 KB
Versions: 19
Compression:
Stored size: 1.58 KB
Contents
# frozen_string_literal: true module Alchemy class Api::ElementsController < Api::BaseController # Returns all elements as json object # # You can either load all or only these for :page_id param # # If you want to only load a specific type of element pass ?named=an_element_name # def index # Fix for cancancan not able to merge multiple AR scopes for logged in users @elements = if cannot? :manage, Alchemy::Element Alchemy::Element.accessible_by(current_ability, :index) else Alchemy::Element.all end @elements = @elements.not_nested.joins(:page_version).merge(PageVersion.published) @elements = if params[:page_id].present? @elements.includes(:page).where(alchemy_pages: {id: params[:page_id]}) else @elements.includes(*element_includes) end if params[:named].present? @elements = @elements.named(params[:named]) end @elements = @elements.order(:position) render json: @elements, adapter: :json, root: "elements" end # Returns a json object for element # def show @element = Element.where(id: params[:id]).includes(*element_includes).first authorize! :show, @element render json: @element, serializer: ElementSerializer end private def element_includes [ { nested_elements: [ { ingredients: :related_object }, :tags ] }, { ingredients: :related_object }, :tags ] end end end
Version data entries
19 entries across 19 versions & 1 rubygems