*警告 - 新手提醒*
我正在读一本名为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的原因是什么?一般的工作是 如果未定义,则实例变量为nil,因此函数返回 除非明确设置@hide_edit_links,否则为false。
但我真的不明白。
你能解释一下新手的更多细节吗?
他稍后用这个
实现它<div class="sidebar_box"> <h2>
<% unless hide_edit_links? %> <span class="edit_link">
<%= link_to "(edit)", :controller => "faq", :action => "edit" %> </span>
<% end %>
答案 0 :(得分:2)
我认为理解代码的关键(我还没有读过这本书)是@hide_edit_links
不是布尔值,它只是某种标记。如果@hide_edit_links
不是nil
(它与哪个对象类型无关)那么hide_edit_links?`将返回true。
我必须说代码根本不是直接,它绝对令人费解和复杂(可能没有任何理由)
示例1(新实例,未设置@hide_edit_links
,因此显示链接)。
@hide_edit_links
,因此instace变量的值为nil
hide_edit_links?
时,@hide_edit_links
为零,因此@hide_edit_links.nil?
返回true,因此not @hide_edit_links.nil?
为false。 unless hide_edit_links?
,因此会显示该链接。示例2(新实例,@hide_edit_links
设置了一个对象,因此它不显示链接)。
@hide_edit_links
设置为非nil
的值。hide_edit_links?
时,@hide_edit_links
不为零,因此@hide_edit_links.nil?
返回false,因此not @hide_edit_links.nil?
为真。 unless hide_edit_links?
,因此不显示该链接。对于琐碎的例子感到抱歉......“功能”并不复杂,但作者使用的解决方案看起来非常复杂。