【发布时间】:2011-02-14 12:05:09
【问题描述】:
我已经使用 Rails 有一段时间了,我发现自己经常做的一件事是在显示之前检查我的视图代码中的某些属性或对象是否为 nil。我开始怀疑这是否总是最好的主意。
到目前为止,我的理由是,由于我的应用程序依赖于用户输入,因此可能会发生意外的事情。如果我从编程中学到了一件事,那就是用户输入程序员没有想到的东西是运行时错误的最大来源之一。通过检查 nil 值,我希望能够避开这一点,并让我的观点优雅地处理问题。
问题是,尽管出于各种原因,我通常会在我的模型或控制器代码中进行类似的 nil 或无效值检查。从最严格的意义上说,我不会称其为代码重复,但它看起来并不是很干燥。如果我已经在我的控制器中检查了 nil 对象,如果我的视图只是假设该对象确实不是 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 %>
这是个好主意还是很傻?
【问题讨论】:
标签: ruby-on-rails error-handling