私はRailsを学んでいて、少し立ち往生しています。
simple-navigation gem を使用してカスタム レンダラーを構築しています。構成オプションが存在する場合は、HTML 要素にブートストラップ アイコンを追加したいと考えています。「引数の数が間違っています (1 に対して 0)」というエラーが表示されますが、これは私のメソッドに関係していると思います。メソッドを次のように定義しようとしました。
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