我正在学习 Rails,有点卡住了。
我正在使用简单导航 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