如果该语句不可能,请跳过`if`

时间:2013-11-28 22:51:22

标签: ruby-on-rails ruby

在我的rails控制器中,我有这段代码:

    if Photo.find(params[:photo_id]).patient_id == nil 
     .........
    else
     .........

所以当我没有params[:photo_id]时出现错误:

    Couldn't find Photo without an ID

我知道我可以解决它:例如:

    if(params[:photo_id]) && (Photo.find(params[:photo_id]).patient_id == nil)

但是现在我试着写一个例外“它叫我怎么想”:

if Photo.find(params[:photo_id]).patient_id == nil rescue false

抛出一个新错误:

syntax error, unexpected modifier_rescue, expecting keyword_then or ';' or '\n' if 

那么错误是什么?(我是编程的初学者!)

3 个答案:

答案 0 :(得分:2)

你只需要一些parens。

if (Photo.find(params[:photo_id]).patient_id == nil rescue false)
  ...
end

答案 1 :(得分:1)

语法错误。尝试:

begin
  if Photo.find(params[:photo_id]).patient_id == nil 
   .........
  else
   .........
rescue
  false
end

答案 2 :(得分:1)

Photo.find_by_id(params[:photo_id]).try(:patient_id)

避免在非特殊情况下使用例外情况......并且通过它的声音,您可能偶尔会看到一张无法找到的照片。