我正在寻找多个阵列,但在基于年份的表格中将它们对齐时遇到了麻烦.目前数据与相应年份不对应,如果数据存在于任何一年,它只是将数据放在第一行,然后为其余数据放置'0'数据,即.不符合年份.
视图
<table>
<% @a.zip(@b, @c, @d) do |a, b, c, d| %>
<tr>
<td><%= a.year %></td>
<% if a.blank? %>
<td>0</td>
<td>0</td>
<% else %>
<td><%= a.id %></td>
<td><%= a.data %></td>
<% end %>
<% if b.blank? %>
<td>0</td>
<td>0</td>
<% else %>
<td><%= b.id %></td>
<td><%= b.data %></td>
<% end %>
<% if c.blank? %>
<td>0</td>
<td>0</td>
<% else %>
<td><%= c.id %></td>
<td><%= c.data %></td>
<% end %>
<% if d.blank? %>
<td>0</td>
<td>0</td>
<% else %> …Run Code Online (Sandbox Code Playgroud) 我在我的rails 3.2应用程序中使用prawn pdf和signature-pad gem,我很难将JSON数据转换为图像以在pdf中呈现.
我有完成后的签名板将JSON数据抛入表中,它看起来像这样.
JSON
[{"lx":29,"ly":18,"mx":29,"my":17},{"lx":29,"ly":19,"mx":29,"my":18},{"lx":29,"ly":24,"mx":29,"my":19},{"lx":29,"ly":27,"mx":29,"my":24},{"lx":29,"ly":30,"mx":29,"my":27},{"lx":29,"ly":32,"mx":29,"my":30},{"lx":32,"ly":32,"mx":29,"my":32},{"lx":33,"ly":32,"mx":32,"my":32},{"lx":35,"ly":31,"mx":33,"my":32},{"lx":39,"ly":24,"mx":35,"my":31},{"lx":42,"ly":16,"mx":39,"my":24},{"lx":48,"ly":7,"mx":42,"my":16},{"lx":51,"ly":2,"mx":48,"my":7},{"lx":54,"ly":-3,"mx":51,"my":2},{"lx":58,"ly":2,"mx":58,"my":1},{"lx":59,"ly":9,"mx":58,"my":2},{"lx":60,"ly":18,"mx":59,"my":9},{"lx":60,"ly":27,"mx":60,"my":18},{"lx":60,"ly":38,"mx":60,"my":27},{"lx":55,"ly":45,"mx":60,"my":38},{"lx":49,"ly":51,"mx":55,"my":45},{"lx":45,"ly":54,"mx":49,"my":51},{"lx":39,"ly":57,"mx":45,"my":54},{"lx":35,"ly":51,"mx":35,"my":50},{"lx":43,"ly":45,"mx":35,"my":51},{"lx":54,"ly":39,"mx":43,"my":45},{"lx":70,"ly":32,"mx":54,"my":39},{"lx":81,"ly":28,"mx":70,"my":32},{"lx":96,"ly":25,"mx":81,"my":28},{"lx":111,"ly":23,"mx":96,"my":25},{"lx":119,"ly":23,"mx":111,"my":23},{"lx":126,"ly":23,"mx":119,"my":23},{"lx":129,"ly":23,"mx":126,"my":23},{"lx":130,"ly":23,"mx":129,"my":23},{"lx":128,"ly":24,"mx":130,"my":23},{"lx":117,"ly":25,"mx":128,"my":24},{"lx":105,"ly":27,"mx":117,"my":25},{"lx":96,"ly":29,"mx":105,"my":27},{"lx":89,"ly":30,"mx":96,"my":29},{"lx":85,"ly":30,"mx":89,"my":30},{"lx":84,"ly":31,"mx":85,"my":30},{"lx":87,"ly":32,"mx":84,"my":31},{"lx":101,"ly":36,"mx":87,"my":32},{"lx":118,"ly":39,"mx":101,"my":36},{"lx":136,"ly":42,"mx":118,"my":39},{"lx":151,"ly":43,"mx":136,"my":42},{"lx":165,"ly":43,"mx":151,"my":43},{"lx":171,"ly":40,"mx":165,"my":43},{"lx":175,"ly":37,"mx":171,"my":40},{"lx":177,"ly":34,"mx":175,"my":37},{"lx":178,"ly":32,"mx":177,"my":34},{"lx":178,"ly":31,"mx":178,"my":32}]
Run Code Online (Sandbox Code Playgroud)
我已经看过了,但我不确定如何最好地实现它?
调节器
def show
@form = Form.find(params[:id])
respond_to do |format|
format.html
format.pdf do
pdf = FormPdf.new(@form)
send_data pdf.render, filename: "form - #{@form.title}", type: "application/pdf", disposition: "inline"
end
end
end
Run Code Online (Sandbox Code Playgroud)
虾PDF
# encoding: utf-8
class FormPdf < Prawn::Document
def initialize(form)
super()
@form = form
all
end
def all
text "Form text here"
move_down 20
signature_data = [[@form.signature, "Signature of person"]]
table(signature_data, position: :center) do
cells.style(:border_width => 0)
end
end
Run Code Online (Sandbox Code Playgroud) 有没有办法调整xy坐标以适应Prawn PDF中的边界框,如果它们大于框的高度?
我正在使用gem'signature-pad-rails'来捕获签名,然后存储以下内容:
[{"lx":98,"ly":23,"mx":98,"my":22},{"lx":98,"ly":21,"mx":98,"my":23},{"lx":98,"ly":18,"mx":98,"my":21}, ... {"lx":405,"ly":68,"mx":403,"my":67},{"lx":406,"ly":69,"mx":405,"my":68}]
Run Code Online (Sandbox Code Playgroud)
我有以下内容在我的pdf中显示签名:
bounding_box([0, cursor], width: 540, height: 100) do
stroke_bounds
@witness_signature.each do |e|
stroke { line [e["lx"], 100 - e["ly"]],
[e["mx"], 100 - e["my"] ] }
end
end
Run Code Online (Sandbox Code Playgroud)
但是在某些情况下,签名会在页面上运行,而不是中心,而且通常只会运行.
我正在使用grouped_collection_select过滤5轨道形式的相关信息.
第一个grouped_collection_select与Property一起过滤掉与Co-operators相关的相关数据.但是,第二个grouped_collection_select在过滤与属性关联的字段时确实有效,但在尝试保存时出现错误:
1 error prohibited this trial from being saved:
Field must exist
Run Code Online (Sandbox Code Playgroud)
形成
<%= form_with(model: trial, local: true) do |f| %>
<label>Co-operator</label>
<%= f.collection_select :cooperator_id, Cooperator.order('last_name'), :id, :full_name %>
<label>Property</label>
<%= f.grouped_collection_select :property_id, Cooperator.order('last_name'), :properties, :full_name, :cooperator_id, :name %>
<label>Field</label>
<%= f.grouped_collection_select :field_id, Property.order('name'), :fields, :name, :property_id, :field_name %>
<%= f.submit 'Submit' %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
当我将其更改grouped_collection_select为a时,collection_select它应该正常工作.但是,这不适合我需要的东西.
<%= f.collection_select :field_id, Field.all, …Run Code Online (Sandbox Code Playgroud) 我有一个rails应用程序,它以xls格式从我的数据库中导出内容.
我正在寻找创建两个单独的表而不将它们放在同一行.反正有两个索引在同一行吗?
<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<ss:Worksheet ss:Name="Sheet">
<Table>
<% @data.each do |data| %>
<Row ss:Index="1">
<Cell ss:Index="1"><Data ss:Type="String"><%= data.name %></Data></Cell>
</Row>
<% end %>
<% @moreData.each do |moreData| %>
<Row ss:Index="1">
<Cell ss:Index="2"><Data ss:Type="String"><%= moreData.name %></Data></Cell>
</Row>
<% end %>
</Table>
</ss:Worksheet>
</Workbook>
Run Code Online (Sandbox Code Playgroud)
这就是我对上面代码的看法:
如果可能的话,这就是我想要实现的,而不是将两个循环放在同一行中:
如果存在两个参数,我正在寻找搜索和查找结果,但我将被发送到car_show_path,但应该有结果.
模型
class Car < ActiveRecord::Base
def self.search(car_number, car_model)
where(['car_number = ? AND car_model = ?', "%#{car_number}%", "%#{car_model}%"])
end
end
Run Code Online (Sandbox Code Playgroud)
控制器展示
@search = Car.search(params[:car_number], params[:car_model])
if @search.present?
@search
else
redirect_to car_path, notice: "Not a valid combination"
end
Run Code Online (Sandbox Code Playgroud)
形成
<%= simple_form_for :search, url: car_show_path do |f| %>
<%= f.input :car_number, :collection => @car.collect {|c| [c.number]}, :include_blank => false %>
<%= f.input :car_model, placeholder: "Car Model" %>
<%= f.button :submit, 'Generate', class: 'btn' %>
<% end %>
Run Code Online (Sandbox Code Playgroud) 我不确定我错过了什么,但我的 css 似乎并没有与 wicked_pdf 一起工作。我的文件中链接了一个图像,该图像有效,但缺少样式。
文件
gem 'wicked_pdf'
gem 'wkhtmltopdf-binary'
Run Code Online (Sandbox Code Playgroud)
控制器
format.pdf do
render pdf: "day_report",
template: 'day/day_report',
page_size: 'A4'
end
Run Code Online (Sandbox Code Playgroud)
应用程序.html.erb
<head>
<title>Page Title</title>
<%= wicked_pdf_stylesheet_link_tag "styles" %>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
</head>
Run Code Online (Sandbox Code Playgroud)
day_report.pdf.erb
<%= wicked_pdf_image_tag( 'logo.jpg', height: '100', width: '100') %>
<div class="page-header">
Day Report
</div>
Run Code Online (Sandbox Code Playgroud)
样式文件
.page-header {
padding: 40px 0;
background-color: red;
text-color: #fff;
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找基于一些用户选择参数创建Postgres查询。
用户将选择一家商店以及开始和结束年份。提交后,我只想显示商品的平均价格(如果它们仅在所选年份内存在)。
例如,用户选择开始日期为2014年和结束日期为2018年。项目香蕉在所有年份中都具有特征,而苹果仅在2014年,2015年和2017年具有特征。因此,我的最终结果将仅显示香蕉的平均价格,而不显示香蕉的平均价格。苹果。
到目前为止,这是我开发的查询。我不确定如何最好地实现仅在所有搜索年份中平均出现的项目。
@sale_averages = Sale.joins(:shops, :items).where('extract(year from season_year) < ? AND extract(year from season_year) > ? ', params[:start_year], params[:end_year])
.where('shops.name = ?', params[:select_shop])
.select('items.name, AVG(sale.price) as price').group('shop.name')
Run Code Online (Sandbox Code Playgroud)
架构图
create_table "items", force: :cascade do |t|
t.string "name"
end
create_table "sales", force: :cascade do |t|
t.integer "shop_id"
t.integer "item_id"
t.date "season_year"
t.decimal "price"
end
create_table "shops", force: :cascade do |t|
t.string "name"
end
Run Code Online (Sandbox Code Playgroud) 我正在使用 Rails 6.0.0.rc1 并希望实现Google-Maps-for-Rails gem。我通过Yarn安装了下划线,并在我的标签中添加了我的 API 所需的谷歌脚本。
我下载gmaps_google.js并将其添加到我的 vendor/js 文件夹中,因为 Rails 6 没有资产管道,而是使用 webpacker。这是我认为要发布的地方,因为我收到以下错误:
ReferenceError: Can't find variable: Gmaps
Run Code Online (Sandbox Code Playgroud)
我更新了我的webpacker.yml文件以查找 vendor/js 文件夹,并且在检查 DOM 时它似乎存在。
webpacker.yml
# Additional paths webpack should lookup modules
# ['app/assets', 'engine/foo/app/assets']
resolved_paths: ['vendor/js']
Run Code Online (Sandbox Code Playgroud)
在我的javascript/packs/application.js我包括一条require("gmaps_google")线。请注意,我在 Highcharts 上遇到了同样的问题,但是能够成功加载脚本但添加了window.Highcharts = Highcharts;但我不确定是否可以使用 require 选项执行相同的操作?
javascript/packs/application.js
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require('jquery')
require("trix")
require("@rails/actiontext")
window.Highcharts = Highcharts;
import Highcharts from 'highcharts';
import addMore from "highcharts/highcharts-more";
import 'bootstrap'
import 'underscore' …Run Code Online (Sandbox Code Playgroud) 我正在使用LazyHighCharts并尝试将json数据转换为仅显示最近24小时,我在将日期和时间("2014-06-16 16:00:00")转换为毫秒时遇到了一些麻烦.
数据结构
{"status": "ok", "data": [{"2014-06-16 16:00:00": 24.2},{"2014-06-17 12:00:00": 30.2},{"2014-06-18 17:00:00": 42.9}]} etc
Run Code Online (Sandbox Code Playgroud)
调节器
@data = JSON.parse(open(@temperature.url).read)
dates = []
temps = []
@data['data'].each do |data|
dates << data.keys
temps << data.values
end
datetime = dates.each do |d| DateTime.parse(d).to_i end
@graph = LazyHighCharts::HighChart.new('graph') do |f|
f.chart(:height => '400')
f.yAxis [:title => {:text => "Temperature", :margin => 20, style: { color: '#333'}}]
f.series(:pointInterval => 1.hour, :pointStart => 30.day.ago, :type => 'area', :name => '24hrs', :data => [[datetime, temps]])
f.options[:xAxis] = …Run Code Online (Sandbox Code Playgroud) 在我的 Rails 应用程序中,我使用多边形绘图工具实现了谷歌地图。我已经能够添加坐标并将其成功保存到我的数据库中。
我遇到的问题是当用户想要编辑并保存对多边形形状所做的任何更改时。我如何实现这个功能?我最好的猜测是使用条件来查看数据库是否有任何保存的坐标,如果有,将它们加载到侦听器中?
超文本标记语言
<div style='width: 100%;'>
<%= hidden_field_tag(:map_coords, value = nil, html_options = {id: 'propertyCoordinates'}) %>
Run Code Online (Sandbox Code Playgroud)
JavaScript
function initMap() {
var map = new google.maps.Map(document.getElementById("map"), {
center: { lat: -40.6892, lng: 74.0445 },
zoom: 8,
mapTypeId: google.maps.MapTypeId.HYBRID,
});
var polyOptions = {
strokeWeight: 0,
fillOpacity: 0.45,
strokeColor: "#FF0000",
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: "#FF0000",
fillOpacity: 0.35
};
// loads databased saved coordinates
var propertyCoords = [<%= @property.coordinates %>];
var points = [];
for (var i = 0; i …Run Code Online (Sandbox Code Playgroud) ruby-on-rails ×11
gmaps4rails ×1
google-maps ×1
highcharts ×1
javascript ×1
json ×1
mysql ×1
pdf ×1
postgresql ×1
prawn ×1
wicked-pdf ×1
xml ×1