2015-01-17 4 views
0

У меня есть задание со многими оценками, и я использую поля для прохождения вложенных оценочных данных.fields_for передачи значения моему собственному помощнику

Об оценке У меня есть значение 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

Вы передаете символ :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

+0

Спасибо за руководство. Я все еще немного смущен о том, как получить значение. Если я делаю 'ff.text_field: force_id', я получаю текстовое поле с нужным значением в нем – user1107201

+0

@ user1107201 извините, но я не понимаю, что вы имеете в виду, можете ли вы описать больше информации для меня? что именно вы не можете получить? –

+0

Я не понимаю, как я могу передать ': strength_id' своему помощнику и использовать значение ID для получения соответствующего имени из таблицы Сильные стороны так же, как' ff.text_field' принимает ': force_id' и создает текстовое поле и помещает в него фактическое значение id – user1107201

Смежные вопросы