我不确定我在这里做的是否是最好的方法,但我有一块数据,我想在搜索完成后显示,而之前根本不在那里.首先,没有什么可显示的,其次,它引用的模型是nil,所以它会抛出一个异常.
我把这个块放在一个局部模板中,并将其添加到布局中的适当位置.有没有一种方法可以清晰地有条件地呈现部分内容?有没有更好的方法来解决这个问题?
我不确定我在这里做的是否是最好的方法,但我有一块数据,我想在搜索完成后显示,而之前根本不在那里.首先,没有什么可显示的,其次,它引用的模型是nil,所以它会抛出一个异常.
我把这个块放在一个局部模板中,并将其添加到布局中的适当位置.有没有一种方法可以清晰地有条件地呈现部分内容?有没有更好的方法来解决这个问题?
Ruby允许你做这样的好事:
<%= render :partial => "foo/bar" if @conditions %>
为了让这篇文章更容易阅读和理解,它可以写成:
<%= render(:partial => "foo/bar") if @conditions %>
render
是一个函数,你给它传递一个散列,告诉它渲染哪个部分.Ruby允许您将内容放在一行上(这通常会使它们更具可读性和简洁性,尤其是在视图中),因此if @conditions
部分只是一个常规的if语句.也可以这样做:
<% if @conditions %>
<%= render :partial => "foo/bar" %>
<% end %>
Edit:
Ruby还允许使用unless
关键字代替if
.这使得代码更具可读性,并且不必进行负面比较.
<%= render :partial => "foo/bar" if !@conditions %>
#becomes
<%= render :partial => "foo/bar" unless @conditions %>