稍微挣扎一下这个。我有两个参数搜索表单,当两个字段匹配时,它将行返回@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?无论搜索是否完成,都是如此。任何人都有任何想法该怎么办?我错过了什么?
答案 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