Rails/3 - 根据实例变量的状态渲染部分?
在这个问题上有点挣扎。我有两个参数搜索表单,当两个字段匹配时,它将行返回到 @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?无论是否进行搜索,始终为真。有人知道该怎么做吗?我缺少什么?
Struggling with this one a little bit. I have two parameter search form, when both fields match it returns the row into @person:
So what i want to happen is render one partial before the search, another one if a person is matched and another one if a record is not found.
Where does this logic go and what can I check against?
def index
if params[:id] && params[:dob]
@person = Person.where("id = ? and dob = ?", params[:id], params[:dob]).first
end
end
In my index.html.haml
-if ! @person.nil
=render :partial => 'found'
-elsif @person.nil
=render :partial => 'not_found'
-else
=render :partial => 'welcome'
Problem is that @person.nil? is always true, whether a search is done or not. Anyone have any ideas what to do? What am I missing?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不过你可以简单地设置 @person
这样你就不会遇到 nil 和检查它是否为 nil 的问题。
在您看来,您只需检查 @person 是否为 false 或者 size 是否大于零。
You can simply set the @person nevertheless
This way you don't have problems with nil and checking if it's nil.
In your view you can just check if @person is false or if size is larger than zero.