Есть ли более компактный способ написать этот код ROR? - PullRequest
1 голос
/ 12 февраля 2010

Есть ли более компактный способ написания следующего кода. Я хотел бы избавиться от строки, которая назначает пустую строку, когда flash [: add_run_error] равен nil.

unless run.save 
  run.errors.each do |attr, msg|  
    flash[:add_run_error] += '<br/>' if flash[:add_run_error] 
    flash[:add_run_error] = '' unless flash[:add_run_error] 
    flash[:add_run_error] += "Invalid #{attr}.  Follow examples below." 
  end 
end

Ответы [ 2 ]

8 голосов
/ 12 февраля 2010

Вы можете просто присоединить attr часть ваших ошибок вместе.

flash[:add_run_error] = run.errors.map{|attr, msg| "Invalid #{attr}.  Follow examples below."}.join('<br/>')
0 голосов
/ 12 февраля 2010

Я бы сделал это так:

unless run.save 
  add_run_errors = []
  run.errors.each do |attr, msg|  
    add_run_errors << "Invalid #{attr}.  Follow examples below." 
  end 
  flash[:add_run_error] = add_run_errors.join '<br />'
end

Но это без первого <br /> - вы можете добавить его просто:

  flash[:add_run_error] = '<br /'> + (add_run_errors.join '<br />')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...