我的作业有很多评估,我使用fields_for来遍历嵌套的评估信息。
在评估中,我有一个ID值,我想将其翻译成其名称。我想将该ID传递给帮助程序并返回字符串名称,但我似乎无法获取ID值?
我的代码是
<%= form_for assignment do |f| %>
<%= f.fields_for :assignmentassessments do |ff| %>
<div class="row">
<div class="col-4">
<% strength_name(:strength_id) %>
</div>
帮助者是
module AssignmentsHelper
def strength_name(id)
if id != nil
@strength = Strength.find_by(id: id)
@strength.name
end
end
end
我收到undefined method name for nil:NilClass
因为当我通过:strength_id
时,它会以nil
答案 0 :(得分:1)
您将符号:strength_id
作为id
传递给此原因错误:
def strength_name(id)
# in this scope your argument id equal :strength_id
# if :symbol return true
# because in Ruby :symbol == true
# but Strength.find_by(id: :symbol)
# return nil
# @strenght equal nil
# and raise undefined method name for nil:NilClass
if id != nil
@strength = Strength.find_by(id: id)
@strength.name
end
end
如何解决这个问题?
只需将有效的id
传递给您的帮助者。