【发布时间】:2014-12-04 16:15:46
【问题描述】:
我对 Rails 很陌生,这是我的第一个单独的应用程序。我使用 Prawn-rails 生成 PDF。
现在,我正在尝试根据 l_answer 中定义的行数添加行
我收到此错误:Exams#show 中的 NoMethodError - 1:Fixnum 的未定义方法 `alq'
我的大虾代码:
@exam.line_questions.each do |q|
pdf.text "#{q.question.question}"
pdf.move_down(5)
pdf.text "#{q.question.l_answer.alq}"
pdf.move_down(30)
end
我在以下位置收到错误消息:pdf.text "#{q.question.l_answer.alq}"
这是我的问题模型类:
class Question < ActiveRecord::Base
DISCIPLINA_TYPE = ["Portugues", "Matematica", "Estudo do Meio"]
ANO_TYPE = ["1º Ano", "2º Ano", "3º Ano", "4º Ano"]
has_reputation :votes, source: :user, aggregated_by: :sum
has_many :line_questions
validates :title , presence:true , uniqueness: true
validates :question, presence:true
validates :disciplina, inclusion: DISCIPLINA_TYPE
validates :ano, inclusion: ANO_TYPE
def alq
linhas = question.l_answer
for i in linhas do
until i <= linhas
if i = 1
"R:________________________________________"
i +=1
else
"__________________________________________"
i += 1
end
end
end
end
好吧,也许我没有很好地解释我自己......
l_answer 是 Question 类的参数。
所以我定义了一个新问题。
所以这个问题需要回答 4 行,所以 l_answer = 4
我把我的代码稍微改了一下:
def alq(l_answer)
l = l_answer
for i in l do
until i = 0
if i = 1
"R:________________________________________"
i -=1
else
"__________________________________________"
i -= 1
end
end
end
end
还有 Prawn pdf 文件到这个:
@exam.line_questions.each do |q|
pdf.text "#{q.question.question}"
pdf.move_down(5)
pdf.text "#{q.question.alq(q.question.l_answer)}"
pdf.move_down(30)
end
但现在我明白了:undefined method `each' for 1:Fixnum!
这更近了吗?
@VitalyKushner 附带说明一下,alq 和 l_answer 并不是方法的好名称。您并没有通过使用更少的符号来拯救树木,而是让阅读变得更加困难;)-哈哈哈哈这就是菜鸟的意思:)。感谢您的输入
【问题讨论】:
-
我认为应该是
pdf.text "#{q.question.alq}"而不是pdf.text "#{q.question.l_answer.alq}" -
感谢@UriAgassi 的回答!我试过了,现在我得到了这个错误:
undefined method 'l_answer' for nil:NilClass...
标签: ruby-on-rails ruby ruby-on-rails-4 nomethoderror