Je commence à travailler avec Ruby et je le module suivant:Ruby retourne TypeError: ne peut pas convertir l'objet en chaîne
module RadioreportHelper
@totalsum = 0
@radio
@daysAndTotals
def load(service, transactionsPerDay)
puts "#{service} : #{transactionsPerDay}"
@radio = service
@daysAndTotals = transactionsPerDay
transactionsPerDay.each{|day, total|
@totalsum += total
}
end
attr_reader :radio, :daysAndTotals, :totalsum
end
Je suis en suivant l'unité cas de test:
class RadioreportHelperTest < ActionView::TestCase
fixtures :services
def test_should_return_populated_radio_module
service = Service.find_by_name("Mix")
transactionsPerDay = {1=>20, 2=>30, 4=>40, 5=>50}
radioReport = RadioreportHelper.load(service, transactionsPerDay)
assert_not_nil(radioReport)
assert_equal("Mix", radioReport.radio.name)
end
end
Mais je reçois toujours l'erreur suivante: TypeError: ne peut pas convertir service en chaîne
Je veux le service objet à être dans le module RadioreportHelper et stocké dans la variable @radio pas la chaîne. Merci, pour toute l'aide les gars!
Est-ce que Service.find_by_name ("Mix"). To_string aussi jeter l'erreur? Si tel est le cas, envisagez de le convertir vous-même au lieu de vous fier à sa méthode to_string. –
Non, ça marche très bien. Service.find_by_name ("Mix") apporte un objet "service" du service de maintenance sans problème. Je veux que l'objet de service passe au module RadioreportHelper. Cependant, quand je le passe de mon test au module, il dit que error (TypeError: ne peut pas cacher le service en String). – marcelo