2

我相信条件可以写得更好:

def update
  if allow_update?
    if @company.update_attributes(params[:company])
      flash.now[:success] = "success message"
    else
      flash.now[:error] = "error message"
    end
  else
    flash.now[:error] = "error message"
  end

  render :show
end

我该如何重写这个?

4

2 回答 2

10

使用&&运算符,可以将两个ifs 合并为一个:

def update
  if allow_update? && @company.update_attributes(params[:company])
    flash.now[:success] = "success message"
  else
    flash.now[:error] = "error message"
  end

  render :show
end
于 2013-08-04T15:40:56.233 回答
0

您可以使用一些字符串插值和三元运算符来缩短代码。

def update
  allow_update? && @company.update_attributes(params[:company]) ? result = "success" : 
  result = "error"
  flash.now[result.to_sym] = "#{result} messege"
  render :show
end
于 2013-08-05T08:39:02.833 回答