##参考にしたページ
動的フォームの参考にしたページ
アップローダー(carrierwave)の参考にしたページ
##わからないこと
画像を任意の枚数だけ投稿できる動的なフォームを作ろうとしており、バリデーションに引っかかった時にそれぞれのサムネイルを表示させる方法がわかりません。
動的フォームは上記リンク先を参考にして一つの画像フォームを複製して追加する仕組みになっており、サムネイルはcarrierwaveのimage_cacheを使用しています。
rails
1app/views/huge/_hoge_fields.html.erbの画像フォーム部分 2 3 <%= image_tag hoge.image if hoge.image? %> 4 <%= f.file_field :image %> 5 <%= f.hidden_field :image_cache %>
上記のような書き方では、hoge.imageの配列の中の先頭にある画像が2つ目以降の画像フォームのサムネイルにも表示されてしまいます。
それぞれの画像フォームにそれぞれ適したサムネイルを表示させるにはどうすればよいでしょうか?
rails
1例) 2 3現状 4 <div 一つ目のフォーム> 5 一つ目の画像が表示される 6 </div> 7 <div 二つ目のフォーム> 8 一つ目の画像が表示される 9 </div> 10 <div 三つ目のフォーム> 11 一つ目の画像が表示される 12 </div> 13 14作りたいもの 15 <div 一つ目のフォーム> 16 一つ目の画像が表示される 17 </div> 18 <div 二つ目のフォーム> 19 二つ目の画像が表示される 20 </div> 21 <div 三つ目のフォーム> 22 三つ目の画像が表示される 23 </div>
##試したこと
配列hogeの先頭の要素を出力した後にrotateメソッドで一つずらしてを繰り返す方法
rails
1app/helpers/application_helper.rb 2 3 def array_rotate(array) 4 array_first = array.first 5 image_tag array_first.image #画像を出力 6 array.rotate #配列を一つ前にずらす 7 end
rails
1app/views/huge/_hoge_fields.html.erbの画像フォーム部分 2 3 <%= array_rotate(hoge) %> 4 <%= f.file_field :image %> 5 <%= f.hidden_field :image_cache %>
と試してみたのですが、全ての画像フォームには配列の先頭の画像(同じ画像)が表示されてしまいます。
あなたの回答
tips
プレビュー