是否有更紧凑的方式来编写此ROR代码?

时间:2010-02-11 22:53:36

标签: ruby-on-rails ruby

是否有更简洁的方法来编写以下代码。当flash [:add_run_error]为零时,我想摆脱指定空字符串的行。

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 个答案:

答案 0 :(得分:8)

您可以简单地将错误的attr部分加入。

flash[:add_run_error] = run.errors.map{|attr, msg| "Invalid #{attr}.  Follow examples below."}.join('<br/>')

答案 1 :(得分:0)

我会这样做:

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 />')