2015-02-18 2 views
0

У меня возникли проблемы с миганием массива ошибок. В настоящее время я звоню notice: errors, но это возвращает массив, который выглядит следующим образом:Не удалось исправить ошибки

["Пожалуйста, введите оценку диапазона один.", "Пожалуйста, введите диапазон оценки два.", "Пожалуйста, введите диапазон между 1 и 100 для одного . ",„Пожалуйста, введите диапазон от 1 до 100 баллов за два.“]

Если я называю flash: errors, чем я получаю эту ошибку

undefined method 'keys' for #<Array:0x0000010f196198>

что бы лучший способ сделать это? Мой код ниже

if beg_score.present? && end_score.present? && beg_score.to_i.between?(1, 100) && end_score.to_i.between?(1, 100) 
    CallLogByScoreWorker.perform_async(beg_score, end_score, query) 
    redirect_to call_logs_path, notice: 'Calls were successfully made.' 
else 
    errors = [] 
    unless beg_score.present? 
    errors << 'Please enter score range one.' 
    end 
    unless end_score.present? 
    errors << 'Please enter score range two.' 
    end 
    unless beg_score.to_i.between?(1, 100) 
    errors << 'Please enter range between 1 and 100 for score one.' 
    end 
    unless end_score.to_i.between?(1, 100) 
    errors << 'Please enter range between 1 and 100 for score two.' 
    end 
redirect_to call_logs_path, flash: errors 

ответ

1

Вместо:

redirect_to call_logs_path, flash: errors 

сделать:

redirect_to call_logs_path, notice: errors.join(' ') 

Таким образом, он возвращает строку, как показано в следующем:

'Please enter score range one. Please enter score range two. Please enter range between 1 and 100 for score one. Please enter range between 1 and 100 for score two.' 

Check документация RubyDocs на странице join способ.

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