2016-06-28 3 views
0

"あまりにも偉大な質問"の謝罪。これはあなたの目が閉じられても脳がコードを考え続けているときに起こります。ルビーの2番目のカンマで分割します。

このビットは私を困惑させる。コンマで文字列を分割して配列にしたい、または...コントローラに完全な配列を送ることができれば完璧ですが、何も動作しないように見えるので、2番目のコンマ文字列で私はparams[:file].split(",")を使用する場合、それは最初のカンマで分割しているため enter image description here

は、だから私はdata:image/jpeg;base64のハンドルのエラーを取得する際に、コード自体も正しい:

私はこのようになります状態配列を持っています。愚かな質問、ルビーの2番目のカンマで分けることができますか?

配列が似ている:、["data:image/jpeg;base64,/9j/xxxxxx,data:image/jpeg;base64,/9j/xxxxxx"]

私の入力は、このようになりますし、私はfile[]で多くのバリエーションを試してみましたfile[][]

<input type="hidden" name="file" value={this.state.files} /> 

私は配列を取得するためにconcatを使用しました。

+0

OKのものと分けので、これを見て、あなたが実際に欲しいの各部分であります"data:"で始まる文字列の中にはい?それは別の解決策を見つけるのに役立ちますか? –

+0

はい。いいえ、私は別の解決策を見つけられませんでした。私はすべて脳の能力から外れています、申し訳ありません。 – Sylar

+0

rgexを使って "data:。*"のすべてのインスタンスを照合するのはどうですか? http://stackoverflow.com/questions/27881549/ruby-regex-to-match-multiple-occurrences-of-pattern –

答えて

3

また、レールに送信する前にさまざまな方法でファイルの配列をシリアライズすることができます。

ファイルを送信するコードはどのように見えますか?

何かあれば、このようにいくつかのユニークなセパレータを付けて参加できますか?

makeRequest({ file: this.state.files.join('---') }); 

そしてルビー

params[:file].split('---') 
+0

さて、react: 'var files = this.state.files.join( '---');'入力値は 'ファイル'になります。作品。ありがとう。 – Sylar

+0

ようこそ。一般的に、文字列に何かをシリアル化する*がある場合、自然には発生しないことが分かっている区切り文字を選択する方が良い方法です。おそらく、より良い方法は、POSTリクエストの場合にはJSONとしてあなたのパラメータを送信することです。次に、無料で配列解析を行います。 –

+0

それはポストだったけど、期待通りに動かなかったので、私はほとんど諦めました。しかし、あなたのコードはその日を救った。 – Sylar

1
params[:files].split(",").each_slice(2).map { |top| "#{top.first},#{top.last}"} 

基本的には通常通り「」によって分割することができますが、その後、すべての2つの要素を一緒にマージ:)

str = '["data:image/jpeg;base64,/9j/xxxxxx,data:image/jpeg;base64,/9j/xxxxxx"]' 
str.split(",").each_slice(2).map{ |top| "#{top.first},#{top.last}"} 
=> ["[\"data:image/jpeg;base64,/9j/xxxxxx", "data:image/jpeg;base64,/9j/xxxxxx\"]"] 
0
result = [] 
incoming_data.gsub(/"data:\S+"/) {|member| result << member} 

多分このよう...

+1

これは質問に対する答えを提供しません。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 - [レビューから](/レビュー/低品質の投稿/ 12833543) –

+0

私の回答を削除する必要がありますか? – nobilik

0
str = "Now is the time for citizens, every last one, to revolt, without delay." 

i1 = str.index(',') 
i2 = i1 + 1 + str[i1+1..-1].index(',') 
[str[0..i2-1], str[i2+1..-1]] 
    # => ["Now is the time for citizens, every last one", 
    #  "to revolt, without delay."]