Trestle.resource(:cover_letters) do menu do item :cover_letters, icon: "fa fa-envelope", priority: 2 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 :company_name column :title column :user 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 'Coverletter', instance, action: :generate_coverletter, method: :get, style: :primary, icon: "fa fa-file-pdf", target: "_blank" end end controller do def generate_coverletter cover_letter = admin.find_instance(params) ac = ActionController::Base.new() tex_content = ac.render_to_string(layout: false, template: 'templates/awesome/coverletter', locals: { "@cover_letter": cover_letter } ) destination_dir = "#{Rails.root}/app/views/templates/awesome" `cd #{destination_dir} && make clean` File.open("#{destination_dir}/coverletter.tex", "w") do |f| f << tex_content end `cd #{destination_dir} && make coverletter.pdf` render file: "#{destination_dir}/coverletter.pdf", layout: false end end routes do get :generate_coverletter, on: :member end end