1

Ruby on Rails 3.2.2 を使用しています。Ruby on Rails メソッドを使用して、以下のコードを改善したいと考えています。

作成する配列["one", "two", "three"]があります

# From `Symbol`s to `String`s
array = [:one, :two, :three].map {|k| k.to_s}
# => ["one", "two", "three"]

次に (attr_accessible以下で使用するメソッドは単なるサンプルメソッドであり、私が何をするかを理解するのに役立ちます。本番環境では、カスタム メソッドで「splat」配列を使用します)

attr_accessible *array
# => attr_accessible "one", "two", "three"

上記を作る良い方法はありますか?["one", "two", "three"]もしそうなら、どうすれば配列を「エレガントな」方法で「変換」できますか?

4

2 に答える 2

1

プレーンなRubyでは次のことができます

array = [:one, :two, :three].map(&:to_s)

map_by_method gemを使用すると、次のことができます。

array = [:one, :two, :three].map_by_to_s

次のようなカスタムメソッドを実装する場合:

def foo(*args)
  converted_args = args.flatten.map(&:to_s)
end

あなたはそれを次のように呼ぶことができます

 foo "one", "two", "three"
 foo :one, :two, :three

 args = [:one, :two, :three]
 foo *args
 foo args # see flatten above
于 2012-05-11T22:45:48.623 に答える
0

あなたの質問は私にはわかりません。文字列の配列をシンボルの配列に変換したいのか、それともシンボルの配列を文字列の配列に変換したいのかわかりません。または、splat を使用するよりも優れたソリューションを探しているかもしれません。いかなる場合でも ...

文字列をシンボルに変換するには、to_sym を使用します。

["one", "two", "three"].map(&:to_sym)

シンボルを文字列に変換するには、to_s を使用します (@Mr.Ronald の回答が示すように)。

[:one, :two, :three].map(&:to_s)
于 2012-05-12T05:04:39.027 に答える