0
我在我的控制器下面的代碼:不能調用從HAML結構屬性文件
@nav_items = ActiveSupport::OrderedHash.new
@nav_items[:home] = Struct::NavItem.new("Home", nil, "/", "icon-home")
@nav_items[:about] = Struct::NavItem.new("About", nil, "/about", "icon-heart")
@nav_items[:contact] = Struct::NavItem.new("Contact", nil, "/contact", "icon-envelope")
if (current_user != nil && current_user.admin?)
@nav_items[:admin_divider] = Struct::NavItem.new(nil, "divider-vertical", nil, nil)
@nav_items[:admin] = Struct::NavItem.new("Admin", nil, "/admin", "")
end
在我看來,以下幾點:
- @nav_items.each do |nav_item|
%li{ :class => nav_item[:class] }
%a{ :href => nav_item[:link] }= nav_item[:text]
而且我的結構定義:Struct.new("NavItem", :text, :class, :link, :icon_class)
我對Ruby,Rails和HAML相對較新,但在另一個使用ERB渲染的項目中,這樣的代碼運行良好。我嘗試過使用類似nav_item.link
的引用屬性,但仍然無效。
我與我當前的代碼得到的錯誤是:
符號作爲數組索引
通過使用類似的代碼nav_item.link
:
未定義的方法'鏈接」的#<陣列:0x126970ff0>
由於這是我第一次使用HAML,我不太確定我做錯了什麼。
嘿嘿!就這樣,魔術。我仍然在摸索着爲什麼使用ERB渲染('<%@ x.each do | y |%>'),但這樣做現在變得更有意義了。非常感謝你! – Lander