-double负*警告 - 新手提醒*轨道的可变
我读了一本书叫RailsSpace学习Ruby on Rails框架。作者构建了用户可以编辑的用户配置文件,现在他正在基于其他用户配置文件构建面向公众的配置文件。他必须做出的唯一改变是基本上隐藏了面向公众的配置文件中的编辑链接。他利用这个功能来隐藏它,但我不明白它是如何工作... hide_edit_links是一个变量
# Return true if hiding the edit links for spec, FAQ, etc.
def hide_edit_links?
not @hide_edit_links.nil?
end
他还写道
顺便说一句,原因hide_edit_links?一般情况下, 实例变量如果未定义则为零,因此函数返回 为false,除非明确设置@ hide_edit_links。
但我真的不明白。
你可以在一个新手更详细的解释吗?
他实现它后来与此
<div class="sidebar_box"> <h2>
<% unless hide_edit_links? %> <span class="edit_link">
<%= link_to "(edit)", :controller => "faq", :action => "edit" %> </span>
<% end %>
这有助于很多。谢谢。 – Leahcim
当我读完这本书并且不得不同意的时候,我就细读了这本书。这是很多不太好的实践中的一个例子。再加上它有点过时了。你可能会更好地选择新版本的“The Rails Way”或任何更新的书籍。 – numbers1311407
只是为了给我两分钱:另一种双重否定的语法是'!! @ variable'。 “雄辩的红宝石”这本书有一个非常明确的解释。 Ruby在布尔上下文中工作,但很少使用真正的布尔值。这与Ruby的哲学是一致的:所有的都是一个对象,除了false和nil以外的任何对象都将被评估为true。因此,除非这个@hide_edit_links预计会在某一时刻明确地变为假,否则几乎毫无意义地产生这样一个令人费解的代码。我真的推荐阅读这本书,这对我理解ruby成语的部分有很大的帮助。 –