Railsの*args
配列に条件付きでハッシュを追加するにはどうすればよいですか?私は元の値が存在するならば、それを踏みにじりたくない。* argsにハッシュを追加するにはどうすればよいですか?
たとえば、私は配列を受け取る方法があります:
def foo(*args)
# I want to insert {style: 'bar'} into args but only if !style.present?
bar(*args) # do some other stuff
end
を私はレールによって提供さextract_optionsとreverse_mergeメソッドを使用して開始しました:
def foo(*args)
options = args.extract_options! # remove the option hashes
options.reverse_merge! {style: 'bar'} # modify them
args << options # put them back into the array
bar(*args) # do some other stuff
end
それは動作しますが、冗長なようで、それほどルビー・イッシュではない。私は何かを逃したように感じる。
あなたはそれを 'args'リストに戻す必要がありますか?最初の2つはRailsソースでは共通していると思います。 –
良い質問です。はい、関数 'foo'はargsを別の関数に渡します。それを示すために質問を編集します。私はFormBuilderクラスを書いています。多くのヘルパーが他のヘルパーを呼びます。 – IAmNaN