fields_for将值传递给我自己的帮助器

时间:2015-01-17 19:36:44

标签: ruby-on-rails

我的作业有很多评估,我使用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

的形式通过

1 个答案:

答案 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传递给您的帮助者。

阅读Understanding Symbols In Ruby