Help refactoring

Hello,

I'm learning rails and starting to try to refactor code that repeats itself..

I have several lines of code like the following and wonder if there is a more efficient way to do this. Any suggestions would be greatly appreciated as one example would help me figure out how to refactor alot of my code.

   if @formatted_question[:anno_a].length < 2       @formatted_question[:anno_a] = @question[:correct_anno]     end     if @formatted_question[:anno_b].length < 2       @formatted_question[:anno_b] = @question[:correct_anno]     end     if @formatted_question[:anno_c].length < 2       @formatted_question[:anno_c] = @question[:correct_anno]     end     if @formatted_question[:anno_d].length < 2       @formatted_question[:anno_d] = @question[:correct_anno]     end     if @formatted_question[:anno_e].length < 2       @formatted_question[:anno_e] = @question[:correct_anno]     end

@formatted_question.each_pair do |key, value| @formatted_question[key] = @question[:correct_anno] if value.length < 2 end

Dheeraj Kumar wrote in post #1114259:

@formatted_question.each_pair do |key, value|    @formatted_question[key] = @question[:correct_anno] if value.length < 2 end

-- Dheeraj Kumar

Thanks!!

Dave Castellano wrote in post #1114260:

Dheeraj Kumar wrote in post #1114259:

@formatted_question.each_pair do |key, value|    @formatted_question[key] = @question[:correct_anno] if value.length < 2 end

-- Dheeraj Kumar

Thanks!!

Oops, that will not work as the hash contains other attributes.. formatted = {             #id: self.id,             #complete_question: "\r#{question} \r\r\r A. #{answer_list[0][0]}\r\r B. #{answer_list[1][0]}\r\r C. #{answer_list[2][0]}\r\r D. #{answer_list[3][0]}\r\r E. #{answer_list[4][0]}\r",             correct_answer: self.correct_ans_1,             answer_a: answer_list[0][0],             answer_b: answer_list[1][0],             answer_c: answer_list[2][0],             answer_d: answer_list[3][0],             answer_e: answer_list[4][0],             anno_a: answer_list[0][1],             anno_b: answer_list[1][1],             anno_c: answer_list[2][1],             anno_d: answer_list[3][1],             anno_e: answer_list[4][1],             anno_pict_1: answer_list[0][2],             anno_pict_2: answer_list[1][2],             anno_pict_3: answer_list[2][2],             anno_pict_4: answer_list[3][2],             anno_pict_5: answer_list[4][2],             correct_ans_pict: self.correct_ans_pict,             #author: self.author,             question_pict: self.question_pict,             question: self.question,             correct_answer_position: random_insert + 1,             correct_answer_letter: correct_answer_shuffled              }

I need to target just anno_a thru anno_d

[:anno_a, :anno_b, :anno_c, :anno_d].each do |key| @formatted_question[key] = @question[:correct_anno] if @formatted_question[key].length < 2 end