Trestle.resource(:users) do menu do item :users, icon: "fa fa-user", priority: 1 end form do |item| concat Trestle::Form::Automatic.new(admin).render(self, item) text_area :objective end # Customize the table columns shown on the index view. table do column :name column :created_at, align: :center actions do |toolbar, instance, admin| toolbar.edit if admin && admin.actions.include?(:edit) toolbar.delete if admin && admin.actions.include?(:destroy) toolbar.link 'CV', instance, action: :generate, method: :get, style: :primary, icon: "fa fa-file-pdf", target: "_blank" toolbar.link 'CLS', instance, action: :generate_cls, method: :get, style: :secondary, icon: "fa", target: "_blank" toolbar.link 'JSON', instance, action: :generate_json, method: :get, style: :secondary, icon: "fa", target: "_blank" end end controller do def generate tex_content = generate_tex destination_dir = "#{Rails.root}/app/views/templates/awesome" `cd #{destination_dir} && make clean` File.open("#{destination_dir}/resume.tex", "w") do |f| f << tex_content end `cd #{destination_dir} && make resume.pdf` render file: "#{destination_dir}/resume.pdf", layout: false end def generate_cls tex_content = generate_tex destination_dir = "#{Rails.root}/app/views/templates/awesome" File.open("#{destination_dir}/resume.tex", "w") do |f| f << tex_content end render file: "#{destination_dir}/resume.tex", layout: false end def generate_json user = admin.find_instance(params) ac = ActionController::Base.new() json = ac.render_to_string(layout: false, template: "users/show", locals: { "@user": user } ) render json: json, layout: false end def generate_tex(template: "resume") user = admin.find_instance(params) ac = ActionController::Base.new() ac.render_to_string(layout: false, template: "templates/awesome/#{template}", locals: { "@user": user } ) end end routes do get :generate, on: :member get :generate_cls, on: :member get :generate_json, on: :member end end