我一直在使用Rails一段时间,我发现自己经常在做的一件事是在我显示它之前检查一下某个属性或对象是否在我的视图代码中为零。我开始怀疑这是否是最好的想法。在Ruby on Rails中检查nil在视图中
我的理由到目前为止,因为我的应用程序依赖用户输入可能会发生意想不到的事情。如果我通常从编程中学到了一件事,那么用户输入程序员没有想到的东西是运行时错误的最大来源之一。通过检查零值,我希望避开这一点,并让我的观点优雅地处理这个问题。
虽然我通常因为各种原因在我的模型或控制器代码中都有类似的零值或无效值检查。我不会把它称为严格意义上的代码重复,但它看起来不太干。如果我已经在控制器中检查了nil对象,那么如果我的视图只是假设该对象真的不是零,那么是否可以?对于可以显示为零的属性,每次检查都是有意义的,但对于对象本身,我不确定什么是最佳实践。
下面是我在说什么的简化,但典型的例子:
控制器代码
def show
@item = Item.find_by_id(params[:id])
@folders = Folder.find(:all, :order => 'display_order')
if @item == nil or @item.folder == nil
redirect_to(root_url) and return
end
end
视图代码
<% if @item != nil %>
display the item's attributes here
<% if @item.folder != nil %>
<%= link_to @item.folder.name, folder_path(@item.folder) %>
<% end %>
<% else %>
Oops! Looks like something went horribly wrong!
<% end %>
这是一个好主意,或者是它只是愚蠢?