Rails / 3 - 根据实例变量的状态渲染部分?

时间:2010-06-30 04:26:30

标签: ruby-on-rails partial-views

稍微挣扎一下这个。我有两个参数搜索表单,当两个字段匹配时,它将行返回@person:

所以我想要发生的是在搜索之前呈现一个部分,如果一个人匹配则另一个部分,如果找不到记录则另一个。

这个逻辑在哪里,我可以检查什么?

def index
  if params[:id] && params[:dob]
    @person = Person.where("id = ? and dob = ?", params[:id], params[:dob]).first
  end
end

在我的index.html.haml

-if ! @person.nil
  =render :partial => 'found'
-elsif @person.nil
  =render :partial => 'not_found'
-else
  =render :partial => 'welcome'

问题是@ person.nil?无论搜索是否完成,都是如此。任何人都有任何想法该怎么办?我错过了什么?

1 个答案:

答案 0 :(得分:1)

您可以简单地设置@person

def index
  if params[:id] && params[:dob]
    @person = Person.where("id = ? and dob = ?", params[:id], params[:dob])
  else
    @person = false
  end
end

这样你就没有nil的问题并检查它是否为零。

在您的视图中,您只需检查@person是否为false或者大小是否大于零。

-if @person
  -if @person.size > 0
    =render :partial => 'found'
  -else
    =render :partial => 'not_found'
  -end
-else
  =render :partial => 'welcome'
-end