У меня есть Datatable в моем индексе. html .haml, из которого я выбираю несколько строк и затем выполняю массовое редактирование их всех в форме, которую я помещаю в edit_multiple. html .haml.
Мой вопрос заключается в том, как взять эти данные формы и отобразить их в формате PDF. Я получаю массив [: device_ids] из моего выбора таблицы, но я не смог спроецировать его в документе. Мне удалось заполнить мой pdf данными, которые у меня есть из моей общей таблицы, но на самом деле я хотел бы только те данные, которые я выбрал, то есть те, которые я собираюсь обновить / отредактировать. Как я могу сделать это возможным?
В моем индексе мне нужно загрузить все устройства, которые есть в моей таблице, из которых я буду выбирать, какие из них я хочу доставить, а затем передать в другое представление редактирования. это edit_multiple. html .haml, где я буду вводить в форму данные, которые я собираюсь обновить, используя def update_multiple. Что мне нужно сделать, это взять данные формы и передать их в PDF, теперь у меня есть интеграция в документ, но вся таблица через localhost: 3000 / devices.pdf
Я использую gem ' wicked_pdf 'и gem' wkhtmltopdf-binary '
.card
.card-content
%p1.title.is-3 Listado de equipos
.media-content.is-pulled-right
%p3.has-text-black Importar
= form_tag import_devices_path, multipart: true do
= file_field_tag :file
= submit_tag "Guardar"
.media-content.is-pulled-right
.column
.media-content.is-pulled-right
%p3.has-text-black Descargar
.tags.has-addons.file
%span.tag.is-dark= link_to 'CSV', devices_path(format: "csv")
%span.tag.is-primary= link_to 'XLS', devices_path(format: "xls")
%hr
.table__wrapper
= form_tag edit_multiple_devices_path, method: :get do
%table{:role => 'datatable'}
%thead
%tr
%th
%th.abbr{:title => "aidi"} Id
%th.abbr{:title => "imei"} Imei
%th.abbr{:title => "brand"} Marca
%th.abbr{:title => "model"} Modelo
%th.abbr{:title => "prov"} Proovedor
%th.abbr{:title => "fac"} Factura
%th.abbr{:title => "din"} Entrada
%th.abbr{:title => "sim"} Sim
%th.abbr{:title => "iccid"} Iccid
%th.abbr{:title => "status"} Status
%th.abbr{:title => "user_id"} Usuario
%th.abbr{:title => "client"} Cliente
%th.abbr{:title => "dout"} Salida
%th.abbr{:title => :use} Usado
%th.abbr{:title => :old} Reutilizado
%tbody
- @devices.includes(:user).each do |device|
%tr
%td= check_box_tag "device_ids[]", device.id
%td= device.aidi
%td= device.imei
%td= device.brand
%td= device.model
%td= device.prov
%td= device.fac
%td= device.din
%td= device.sim
%td= device.iccid
%td= device.status
%td= device.user.try :email
%td= device.client
%td= device.dout
%td= device.use
%td= device.old
= submit_tag "Editar", class: "button is-primary is-rounded"
%br
%button.button.is-primary.is-rounded= link_to 'New Device', new_device_path
edit_multiple. html .haml
.columns
.column.is-three-fifths.is-offset-one-fifth
.card
.card-content
%h3.title.is-3 Entrega de equipos
%hr
= form_tag update_multiple_devices_path, method: :put do
%ul
- @devices.each do |device|
%li
= hidden_field_tag "device_ids[]", device.id
= device.aidi
%ul.errors
- device.errors.full_messages.each do |msg|
%li= msg
= fields_for :device do |f|
.field
= f.label "Usuario", class: "label"
= f.select :user_id, User.all.collect { |x| [x.email, x.id] }
.field
= f.label "Cliente", class: "label"
= f.text_field :client
.field
= f.label "Fecha de entrega", class: "label"
= f.date_select :dout
.actions
= submit_tag 'Guardar', class: "button is-primary"
.has-text-right
= link_to 'Regresar', devices_path
devices_controller
class DevicesController < ApplicationController
before_action :set_device, only: [:show, :edit, :update, :destroy]
# GET /devices
# GET /devices.json
def index
@devices = Device.all
respond_to do |format|
format.html
format.csv { send_data @devices.to_csv }
format.xls #{ send_data @devices.to_csv(col_sep: "\t") }
format.pdf {render template: 'devices/entrega', pdf: 'Entrega'}
end
end
def edit_multiple
@devices = Device.find(params[:device_ids])
end
def update_multiple
@devices = Device.find(params[:device_ids])
@devices.reject! do |device|
device.update_attributes(params[:device].reject { |k,v| v.blank? })
end
if @devices.empty?
redirect_to devices_url, notice: 'Equipos entregados'
else
@device = Device.new(params[:device])
render "edit_multiple"
end
end
end
entrega. html. эрб
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>Entrega</title>
<%= wicked_pdf_stylesheet_link_tag 'pdf' %>
<link rel="stylesheet" type="text/scss" href="https://cdn.jsdelivr.net/npm/bulma@0.8.0/css/bulma.min.css">
</head>
<body>
<header class="clearfix">
<div id="logo">
<img src="logo.png">
</div>
<div id="company">
<h2 class="name">Ubiknos México</h2>
<div>Porfirio Díaz 100, Nochebuena, 0372455, CDMX</div>
<div>55 9000 8961</div>
<div><a href="mailto:company@example.com">instalaciones@ubiknos.com</a></div>
</div>
</div>
</header>
<main>
<div id="details" class="clearfix">
<div id="client">
<div class="to">Destinatario:</div>
<h2 class="name">Axel flores</h2>
<div class="address">Entrega: David Melgoza</div>
<div class="email"><a href="mailto:john@example.com">aqui va el correo.com</a></div>
</div>
<div id="invoice">
<h1>10 Equipos</h1>
<div class="date">fecha: 01/06/2014</div>
</div>
</div>
<h2 class="name">Acuse de entrega</h2>
<p>Han sido enviados o recibidos los siguientes equipos de rastreo GPS:</p>
<br>
<table id="E1" class="table-lightshading-accent1 E1">
<tr>
<td align="center">#</td>
<td align="center">DESCRIPCION</td>
<td align="center">ID</td>
<td align="center">IMEI</td>
</tr>
<% @devices.each do |device| %>
<tr>
<td align="center"><%= device.id %></td>
<td align="center"><%= device.model %></td>
<td align="center"><%= device.aidi %></td>
<td align="center"><%= device.imei %></td>
</tr>
<% end %>
</table>
<div id="thanks">Gracias!</div>
<div id="notices">
<div>NOTA:</div>
<div class="notice">Asegurate de comparar la información recibida en éste documento con el material entregado, de haber alguna irregularidad contactate con el equipo de ingeniería.</div>
</div>
<hr>
<p class="date">Firma de conformidad:</p>
<br>
<u><a>estoy conforme we</a></u>
</main>
<footer>
Ubiknos México, S.A. de C.V. –Porfirio Díaz No. 100 piso 6, Col. Nochebuena, México, D.F., C.P. 03720 / R.F.C. UME090714GU5
</footer>
</body>
</html>