2013-11-04 73 views
1

我正在學習Rails,並且有點卡住了。如果嵌套數組存在,我該如何返回true

我使用簡單導航gem並構建自定義渲染器,如果存在配置選項,我想將引導程序圖標添加到HTML元素。我收到一個錯誤「參數數量錯誤(0代表1)」,我認爲這與我的方法有關。我試圖將方法定義爲:

content_tag('span', (content_tag(:i, nil, :class => item.html_options[:opts][:icon]) + item.name if have_icon?), link_options_for(item).except(:method)) 

def have_icon?(item) 
    !item.html_options[:opts][:icon].blank? 
end 

我不知道我是否正確編寫了content_tag。其實我確信我沒有。我也認爲我得到「錯誤的參數數量」,因爲item.html_options[:opts]item.html_options[:opts][:icon]丟失,因此指出我的方法寫得不好。

有人可以幫忙嗎?


編輯:

我重寫了代碼和它的作品,但我的問題仍然有效,所以我可能會在編碼更好。所以我的問題是,have_icon?方法是否正確,或者如果[:opts][:opts][:icon]都存在,我將如何重寫它以返回布爾值?

這是工作代碼:

content_tag('span', name_with_icon(item), link_options_for(item).except(:method)) 

def name_with_icon(item) 
    if item.html_options[:opts] 
    if item.html_options[:opts][:icon] 
     content_tag(:i, nil, :class => item.html_options[:opts][:icon]) + item.name 
    else 
     item.name 
    end 
    else 
    item.name 
    end 
end 
+4

您的方法需要一個參數。你的電話沒有提供。 –

+0

那是顯而易見的...謝謝!我不能相信我錯過了這一點。 –

回答

0

粗略(我永遠記得,如果它是getfetch訪問哈希值):

def name_with_icon(item) 
    icon = item.html_options[:opts].andand.fetch[:icon] 
    content = icon ? content_tag(:i, nil, class: icon) : "" 
    "#{content}#{item.name}" 
end 

這是假設andand gem,或者您可以使用try

相關問題