-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成語的部分有很大的幫助。 –