<% if namespaced? -%> require_dependency "<%= namespaced_path %>/application_controller" <% end -%> <% module_namespacing do -%> class <%= controller_class_name %>Controller < ApplicationController before_action :authorize before_action :set_<%= singular_table_name %>, only: [:show, :edit, :update, :destroy] def index @query = <%= class_name %>.query.new(self) @entities = @query.entities respond_to do |format| format.html do @entities = @entities.page(params[:page]) render layout: !request.xhr? end format.json { render json: @entities.all, only: %i(id)+<%= class_name %>.registered_attributes.keys } format.xml { render xml: @entities.all, only: %i(id)+<%= class_name %>.registered_attributes.keys } end end def show respond_to do |format| format.html format.json { render json: @<%= singular_table_name %> } format.xml { render xml: @<%= singular_table_name %> } end end def new @<%= singular_table_name %> = <%= orm_class.build(class_name) %> respond_to do |format| format.html format.js end end def edit respond_to do |format| format.html format.js end end def create @<%= singular_table_name %> = <%= orm_class.build(class_name, "#{singular_table_name}_params") %> respond_to do |format| if @<%= orm_instance.save %> format.html { redirect_to @<%= singular_table_name %>, notice: t(:text_created) } format.json { render json: @<%= singular_table_name %>, status: :created, location: @<%= singular_table_name %> } format.xml { render xml: @<%= singular_table_name %>, status: :created, location: @<%= singular_table_name %> } else format.html { render :new } format.json { render json: @<%= singular_table_name %>.errors, status: :unprocessable_entity } format.xml { render xml: @<%= singular_table_name %>.errors, status: :unprocessable_entity } end end end def update respond_to do |format| if @<%= orm_instance.update("#{singular_table_name}_params") %> format.html { render(:edit, notice: t(:text_updated)) } format.any(:json, :xml) { head(:no_content) } else format.html { render(:edit) } format.json { render(json: @<%= singular_table_name %>.errors, status: :unprocessable_entity) } end end end def destroy @<%= orm_instance.destroy %> respond_to do |format| format.html { redirect_back_or_default <%= index_helper %>_path, notice: t(:text_destroyed) } format.js { render js: "Symphonia.filters.removeRow('#{view_context.dom_id(@<%= singular_table_name %>)}')"} format.any(:json, :xml) { head :no_content } end end private # Use callbacks to share common setup or constraints between actions. def set_<%= singular_table_name %> @<%= singular_table_name %> = <%= orm_class.find(class_name, "params[:id]") %> end # Only allow a trusted parameter "white list" through. def <%= "#{singular_table_name}_params" %> <%- if attributes_names.empty? -%> params.fetch(:<%= singular_table_name %>, {}) <%- else -%> allowed = [<%= attributes_names.map { |name| ":#{name}" }.join(', ') %>] params.require(:<%= singular_table_name %>).permit(allowed) <%- end -%> end end <% end -%>