我正在尝试使用Prawn生成pdf
@buyer = Buyer.last
Prawn::Document.generate("samle.pdf") do
text "hello #{@buyer.name} world"
end
Run Code Online (Sandbox Code Playgroud)
但这显然不起作用(只有我使用类变量@@ buyer),我的问题是将变量传递给Prawn :: Document.generate的正确方法是什么
(我知道解决这个问题的方法是prawnto,但我正在尝试一点......而且这也是一个sinatra项目)
我正在使用Prawn gem 在Ruby on Rails中创建pdf文档的生成器,我想到了当我有中文,日文和西里尔文字符时它们显示不正确的问题.我用Google搜索,因为"当我生成字体时,我需要指定,pdf文本应该用什么字体呈现".
现在这不是问题,而是我的文档将包括gTLD支持的所有可能的字符.
问题1:
你知道生成pdf文件的任何字体,包括尽可能多的字符(亚洲,欧洲,符号......)?理想情况下,gTLD支持的所有字符.
我知道Prawn默认包含gkai00mp.ttf,但它专注于中文字符,我正在寻找允许将它们全部包含在内(就像PokeMon一样,它们能够抓住它们;我知道我要求的太多但仍然...... .)
另一个问题是当客户打开此文档时:
问题2
是否由Prawn生成的pdf包括我在pdf文件中的字体,所以当其他计算机打开它时,字体会出现?这是默认标准吗?或者我需要确保/强制执行此功能?
问题背景:
假设config/locales/en.yml中有一些非常重要的行对于存在至关重要.
en:
foo:
bar: "bubla!"
Run Code Online (Sandbox Code Playgroud)
所以我现在测试的方式是这样的
#spec/locals_spec.rb
require 'spec_helper'
describe I18n do
it do
I18n.t('date.datepicker').should be_kind_of(String)
end
end
Run Code Online (Sandbox Code Playgroud)
这样我只是确保翻译存在并且不会继续(例如'foo.bar.car.lol'
但我仍然不满意
问题:使用RSpec测试I18n翻译的最佳实践是什么?在spec文件夹中我应该放置它们?
ruby-on-rails internationalization rspec-rails ruby-on-rails-3
当我想测试RSpec 是否无法访问属性时我就是这样做的
class Foo
attr_accesible :something_else
end
describe Foo do
it('author should not be accessible') {lambda{described_class.new(:author=>true)}.should raise_error ActiveModel::MassAssignmentSecurity::Error}
it('something_else should be accessible'){lambda{described_class.new(:something_else=>true)}.should_not raise_error ActiveModel::MassAssignmentSecurity::Error}
end
Run Code Online (Sandbox Code Playgroud)
这样做有更好的方法吗?
...谢谢
我正在尝试使用像这样的Sass循环生成我自己的前缀版本来解决Bourbon不支持@keyframe:
$list: '' -ms- -webkit- -moz- -o-
$at: @ //at sign
@each $prefix in $list
#{$at}#{$prefix}keyframes moveclouds
from
#{$prefix}transform: translateX(2400px)
to
#{$prefix}transform: translateX(-400px)
Run Code Online (Sandbox Code Playgroud)
并期望生成css:
@keyframes moveclouds from {
transform: translateX(2400px);
}
@keyframes moveclouds to {
transform: translateX(-400px);
}
@-moz-keyframes moveclouds from {
-moz-transform: translateX(2400px);
}
@-moz-keyframes moveclouds to {
-moz-transform: translateX(-400px);
}
....
Run Code Online (Sandbox Code Playgroud)
问题是我无法弄清楚如何@在一行开始时强制Sass输出(在符号处)
如果我做
$at: @ // wont work, error
$at: \@ // will generate \@keyframes = not good
$at: "\@" // wont …Run Code Online (Sandbox Code Playgroud) 嗨,有人曾经遇到PATCH过XHR(AJAX请求)方法被防火墙阻止的情况吗?
基本上我们有一种情况,客户抱怨他无法更新我们的应用程序的东西.我们在它工作的世界各地检查了它(我们通过VPN几个地方连接)
然后他们为我们提供了一个远程桌面(最新的Windows,最新的Chrome),所以我们从他们的网络中为我们自己尝试了它,他们是对的.通过AJAX调用的所有PATCH方法最终都以405结束,但所有PUT POST DELETE GET方法都很好.我们试图在应用程序和Nginx日志中跟踪这些PATCH请求,但似乎它们从未到过我们的服务器.所以结论是他们的防火墙更新让请求离开建筑物.
正常:
| Laptop PATCH -> Clients Firewal -> Load Balancer -> Nginx proxy -> Rails app (200 response) |
Run Code Online (Sandbox Code Playgroud)
这个防火墙案例:
| Laptop PATCH -> Clients Firewal (405 response) |
Run Code Online (Sandbox Code Playgroud)
由于没有时间对此进行调查,我们只是将一些有问题的端点从PATCH更改为PUT,一切正常!
我唯一的解释是因为PATCH是另一个(后来介绍的)RFC的一部分,他们的防火墙必须是超级旧的,而不是将PATCH注册为有效方法.他们的系统管理员不知道为什么会这样.但有一条线索是,应用程序是EdTech,客户是学校=>他们不一定可能在他们的网络堆栈上拥有最新技术.也可以预设保姆软件.
在同一问题上交叉引用Reddit讨论:https://www.reddit.com/r/rest/comments/5gkvba/patch_blocked_by_firewall/
我正在尝试从元组列表中提取值:
s3_headers = %{headers: [{"x-amz-id-2","yQKurzVIApkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxFBINsPxe+7Vc="},
{"x-amz-request-id", "82xxxxxxxxx23"},
{"Date", "Thu, 25 May 2017 22:03:09 GMT"},
{"Last-Modified", "Thu, 25 May 2017 21:42:28 GMT"},
{"ETag", "\"6f04733333333333333368997\""},
{"x-amz-meta-original_name", "Screenshot from 2016-11-27 17-32-03.png"},
{"Accept-Ranges", "bytes"}, {"Content-Type", ""},
{"Content-Length", "612391"}, {"Server", "AmazonS3"}], status_code: 200}
Run Code Online (Sandbox Code Playgroud)
我到目前为止如何设法做到这一点的方式是这样的:
{"x-amz-meta-original_name", original_name } = s3_headers |> List.keyfind("x-amz-meta-original_name", 0)
{"Content-Length", content_length } = s3_headers |> List.keyfind("Content-Length", 0)
{"Content-Type", content_length } = s3_headers |> List.keyfind("Content-Type", 0)
Run Code Online (Sandbox Code Playgroud)
感觉过度复杂可以推荐更好的方法吗?
我有一个带有浮动列的表(我正在使用 MySQL、mysql2 gem,一切都是标准的)
create_table :some_table do |t|
t.float :amount
end
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我正在控制台上玩
a = SomeTable.new
a.amount = 9999.99
a.save!
#9999.99
a.amount
#9999.99
a.reload
a.amount
#9999.99
Run Code Online (Sandbox Code Playgroud)
一切还好
a = SomeTable.new
a.amount = 9999.999
a.save!
#9999.999
a.amount
#9999.999
a.reload
a.amount
#10000.00
Run Code Online (Sandbox Code Playgroud)
正如您所看到的 ruby (或rails)对数字进行四舍五入。
有人能解释一下这是为什么吗?……还是只有我一个人?
我正在用haml编写文本:
Blab bla for any questions contact us on me@foo.com.
Run Code Online (Sandbox Code Playgroud)
所以haml看起来像
%p
Blab bla for any questions contact us on
= mail_to 'me@foo.com'
.
Run Code Online (Sandbox Code Playgroud)
注意. 是ascii中的点,我也可以用= '.'(渲染字符串点)替换该行
但渲染的文字看起来像
Blab bla for any questions contact us on me@foo.com .
Run Code Online (Sandbox Code Playgroud)
区别在于最后点之前的空格
我想出的解决方案就是
%p
Blab bla for any questions contact us on
= mail_to('me@foo.com') + '.'
Run Code Online (Sandbox Code Playgroud)
这只是我正在寻找最佳实践:) thx
如你所知,你可以做ruby
"%03d" % 5
#=> "005"
"%03d" % 55
#=> "055"
"%03d" % 555
#=> "555"
Run Code Online (Sandbox Code Playgroud)
所以基本上数字将有3个字符串位置的"0"前缀
只是想知道是否有可能以类似的方式做数字字符串后缀?(如果声明请不要)
something 5
#=> 500
something 55
#=> 550
something 555
# => 555
Run Code Online (Sandbox Code Playgroud)