小编equ*_*nt8的帖子

用prawn生成PDF - 如何在Prawn.generate中访问变量?

我正在尝试使用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项目)

ruby ruby-on-rails prawn

6
推荐指数
1
解决办法
1502
查看次数

用于生成pdf的任何字体都可以处理中文,西里尔文...?

我正在使用Prawn gem 在Ruby on Rails中创建pdf文档的生成器,我想到了当我有中文,日文和西里尔文字符时它们显示不正确的问题.我用Google搜索,因为"当我生成字体时,我需要指定,pdf文本应该用什么字体呈现".

现在这不是问题,而是我的文档将包括gTLD支持的所有可能的字符.

问题1:

你知道生成pdf文件的任何字体,包括尽可能多的字符(亚洲,欧洲,符号......)?理想情况下,gTLD支持的所有字符.

我知道Prawn默认包含gkai00mp.ttf,但它专注于中文字符,我正在寻找允许将它们全部包含在内(就像PokeMon一样,它们能够抓住它们;我知道我要求的太多但仍然...... .)

另一个问题是当客户打开此文档时:

问题2

是否由Prawn生成的pdf包括我在pdf文件中的字体,所以当其他计算机打开它时,字体会出现?这是默认标准吗?或者我需要确保/强制执行此功能?

pdf fonts pdf-generation ruby-on-rails prawn

6
推荐指数
1
解决办法
2875
查看次数

如何使用RSpec在Rails中测试i18n

问题背景:

假设config/locales/en.yml中有一些非常重要的行对于存在至关重要.

en:
  foo:
    bar: "bubla!"
Run Code Online (Sandbox Code Playgroud)
  • 我不想测试每一行但是
  • 我不希望测试太脆弱(所以没有I18n.t('foo.bar').should =〜/ bubla /)

所以我现在测试的方式是这样的

#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

6
推荐指数
1
解决办法
6765
查看次数

rails attr_accessible rspec check

当我想测试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)

这样做有更好的方法吗?

...谢谢

ruby-on-rails shoulda attr-accessible ruby-on-rails-3

6
推荐指数
1
解决办法
1281
查看次数

在Sass中对@keyframes的前缀进行插值

我正在尝试使用像这样的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)

sass

6
推荐指数
1
解决办法
1184
查看次数

PATCH方法被防火墙阻止了吗?

嗨,有人曾经遇到PATCHXHR(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/

rest firewall

6
推荐指数
1
解决办法
2141
查看次数

从元组Elixir列表中选择值

我正在尝试从元组列表中提取值:

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)

感觉过度复杂可以推荐更好的方法吗?

elixir

6
推荐指数
1
解决办法
2314
查看次数

Rails 在 DB 级别舍入浮点数

我有一个带有浮动列的表(我正在使用 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)对数字进行四舍五入。

有人能解释一下这是为什么吗?……还是只有我一个人?

ruby mysql ruby-on-rails rounding

5
推荐指数
1
解决办法
2955
查看次数

在添加rails link_to,mail_to之后,haml删除前面的空格

我正在用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

haml ruby-on-rails

5
推荐指数
3
解决办法
2443
查看次数

怎么做数字到字符串后缀

如你所知,你可以做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)

ruby ruby-on-rails

5
推荐指数
1
解决办法
694
查看次数