【问题标题】:Wrong prawn method or wrong object?错误的虾方法或错误的对象?
【发布时间】:2017-08-22 14:14:33
【问题描述】:

我正在尝试在无法读取 csv 文件的地方启动程序,并将数据打印在 pdf 文件上。现在我有一个问题。 这是我的代码:

------------------------------------
require_relative 'friends'

class List

  attr_accessor :list_name, :list

  def initialize(list_name)
    @list_name = list_name
    @list = []
  end

  def list_name
    @list_name
  end

  def liste
    @list
  end

  def wert(place)
    @list[place].to_s
  end

  def list_length
    @list.length
  end

  def print_list
    @list.each do |freunde|
    "#{freunde.name},#{freunde.age}"
    end
  end

  def add_friend(a_friend)
    @list.push(a_friend)
  end

  def load_friend(from_file)
      File.readlines(from_file).each do |line|
        add_friend(Freunde.from_csv(line))
      end
  end

end
-------------------------------------------

  require_relative 'list'

  class Friends

    attr_accessor :name,:age

    def initialize(name, age)
      @name = name
      @age = age
    end

    def self.from_csv(string)
      name, age = string.split(',')
      Freunde.new(name,age)
    end

   def friends
    @name
   end
  end   
-------------------------------------------

require 'prawn'
require_relative 'list'
require_relative 'friends'


class Generating
include Prawn::View

  def initialize
    @document = Prawn::Document.new(:page_size => "A4")
    @fontpath = File.expand_path("../data/fonts", __FILE__)
    liste1 = Listen.new("Friendslist")
    liste1.load_friend("test.csv")
    print_list
    save
  end

  def print_friends
    font("#{@fontpath}/Arial.ttf") do
        font_size 11
        text_box("#{liste1.print_list}", :at => [15,405], :height => 50, 
        :width => 250)
end
  end

  def save
    self.render_file "Hello.pdf"
  end
end
---------------------------------------------

当我现在创建一个新的生成对象时:

gen = Generating.new

然后它使整个程序失败,因为错误表明方法未知(print_list)。是我为方法(print_list)提交了错误的对象,还是使用了对虾的文本输出方法错误?

【问题讨论】:

  • “错误说方法未知(print_list)” - 我高度怀疑这就是错误所说的。我 100% 确定它会至少告诉你一个行号并显示一个堆栈跟踪。没有这些,我们就没有足够的信息来帮助您。 精确 错误信息是什么?你期望什么结果,为什么?期望的行为是什么,为什么?您能否提供一个精确说明您希望发生的事情,包括任何和所有规则、这些规则的例外情况、极端情况、特殊情况、边界情况和边缘情况? …
  • ... 您能否提供示例输入和输出来展示您期望发生的情况,无论是在正常情况下,还是在所有异常情况下、极端情况下、特殊情况下、边界情况下和边缘情况下?请同时提供minimal reproducible example。 (特别关注 minimal:我非常怀疑它需要 100 行来重现问题,事实上,我敢打赌,你可以用 2 短行来演示问题。)
  • 我的错误说,“在我安装 Gem Prawn 的路径中:C:/Ruby24-64/.... in "method_missing": undefinde local variable or method "print_list" for #".
  • 我谢谢你,但我认为我的问题是足够的信息,我担心的是:我是在错误的方法上转换方法(.print_list)还是我在文本中使用了错误的方法虾。因为再次有人解决了问题并且程序运行但它没有在 pdf_file 上打印文本。

标签: ruby csv prawn


【解决方案1】:

print_listList 类的一个实例方法,你在self 对象上调用它,那里有Generating 的一个实例。应该是:

liste1 = Listen.new("Friendslist")
liste1.load_friend("test.csv")
#⇓⇓⇓⇓⇓⇓
liste1.print_list

【讨论】:

  • 谢谢,现在我的代码运行了,但它没有打印出 pdf 文件中的方法行。没有错误消息,pdf文件被渲染但为空白。
  • 如果您有其他问题,请发布另一个问题。此问题中陈述的问题已解决,SO 的经验法则是“一题一题”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多