2010-12-29 4 views
0

Я работаю над скриптом, который, как предполагается, записывает список элементов в хэш, но по какой-то причине он помещает только последний элемент в цикле в хэш ... Я работал над этот скрипт весь день, так что я уверен, что его кое-что мне просто не хватает.Проблемы с контуром Ruby

Вот этот скрипт

@mr = MediaRating.where("user_id = ?", session['user_credentials_id']) 
@mr.each do |rating| 
    @m = Media.where("id = ?", rating.media_id) 
    @m.each do |m| 
    s = Profile.find_by_subscriber_id(m.subscriber_id) 
    @h_lang = Language.find_by_code(s.language) 
    @history = {m.title => @h_lang.english} 
    end 
end 

Есть несколько записей в таблице MediaRating, так что я знаю, что должен сделать что-то с тем, как мой цикл. Заранее спасибо за помощь!

Рабочий код:

@mr = MediaRating.where("user_id = ?", session['user_credentials_id']) 
@mr.each do |rating| 
    @m = Media.find(rating.media_id) 
    s = Profile.find_by_subscriber_id(@m.subscriber_id) 
    @h_lang = Language.find_by_code(s.language) 
    @history[@m.title] = @h_lang.english 
end 
+1

сторона примечание: эти находки с идентификатором показывает, что вы не используете ассоциации (has_many, BELONGS_TO, ...) – tokland

ответ

13

В последней строке, вы перезаписывания весь @history хэш вместо добавления новой пары ключ/значение для него. Я предполагаю, что это не то, что вы намеревались. Измените эту строку:

@history = {m.title => @h_lang.english} 

к этому:

@history[m.title] = @h_lang.english 
+0

Я знал, что это было что-то простое !!! Благодаря! Я даже смог упростить свои петли! Добавлен новый код выше. – dennismonsewicz

+6

@dennismonsewicz: Тогда настало время для того, чтобы вытащить эту большую жирную галочку для этого ответа. – karatedog

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