解決したいこと
gonで指定したページのみ変数定義させたい
##現状、背景
フリマアプリの出品した商品を編集する機能を実装していて、ここでは gem "gon" を使用して、出品した写真のデータ等を
追加、削除できる機能実装したところ、
他の機能で、JSを使用したところが効かなくなるエラーが出てしまっている状況です。
##該当コード
itemcont
1 2 def edit 3 end 4 def update 5 @item = Item.find(params[:id]) 6 @images = @item.images 7 8 ids = @item.images.map{|image| image.id } 9 10 exist_ids = registered_images_params[:ids].map(&:to_i) 11 12 exist_ids.clear if exist_ids[0] == 0 13 14 if (exist_ids.length != 0 || new_image_params[:images][0] != " ") && @item.update!(item_update_params) # ||はor(または) 15 16 17 unless ids.length == exist_ids.length 18 19 delete_ids = ids - exist_ids 20 delete_ids.each do |id| 21 @item.images.find(id).destroy 22 end 23 end 24 25 26 unless new_image_params[:images][0] == " " 27 new_image_params[:images].each do |image| 28 @item.images.create(image_url: image, item_id: @item.id) 29 end 30 end 31 32 # flash[:notice] = '編集が完了しました' 33 respond_to do |format| 34 format.js { render ajax_redirect_to(item_path(@item)) } 35 end 36 37 else 38 flash[:alert] = '未入力項目があります' 39 rener :edit 40 end 41 42 end 43 44 def get_category_children 45 @category_children = Category.find_by(name: "#{params[:parent_name]}", ancestry: nil).children 46 end 47 48 def get_category_grandchildren 49 @category_grandchildren = Category.find("#{params[:child_id]}").children 50 end 51 52 def logout 53 end 54 55 def userprofile 56 end 57 58 private 59 60 def item_update_params 61 params.require(:item).permit( :name, :description, :category_id, :size_id, :brand_id, :prefecture_id, :condition_id, :delivery_charge_id, :delivery_way_id, :delivery_days_id, :price) 62 end 63 64 def registered_images_params 65 params.require(:registered_images_ids).permit({ids: []}) 66 end 67 68 def new_image_params 69 params.require(:new_images).permit({images: []}) 70 end 71 72 def set_category 73 @category_parent_array = ["---"] 74 Category.where(ancestry: nil).each do |parent| 75 @category_parent_array << parent.name 76 end 77 end 78 79 def set_gon 80 @item= Item.find(params[:id]) 81 @images = @item.images 82 83 gon.item = @item 84 gon.images = @item.images 85 86 87 # @item.images.image_urlをバイナリーデータにしてビューで表示できるようにする 88 require 'base64' 89 gon.images_binary_datas = [] 90 if Rails.env.production? 91 client = Aws::S3::Client.new( 92 region: 'ap-northeast-1', 93 access_key_id: ENV["AWS_ACCESS_KEY_ID"], 94 secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"], 95 ) 96 @item.images.each do |image| 97 binary_data = client.get_object(bucket: 'freemarket-sample66e', key: image.image_url.file.path).body.read 98 gon.images_binary_datas << Base64.strict_encode64(binary_data) 99 end 100 else 101 @item.item_images.each do |image| 102 binary_data = File.read(image.image_url.file.file) 103 gon.images_binary_datas << Base64.strict_encode64(binary_data) 104 end 105 end 106 end 107end
edit
1 2.sell_item_html 3 = render "/items/sheard/icon_header" 4 5 // 商品フォームヘッダー 6#edit_item 7 .item 8 .item__title 9 %h2.edit_title 商品の情報を入力 10 = form_for @item do |f| 11 .item__img 12 %ul.edit_ul 13 %li 14 %h3 出品画像 15 %li 16 .required__icon 必須 17 .clearfix 18 %p.max_10 最大10枚までアップロードできます 19 20 = f.fields_for :images, @item.images.first do |image| 21 .item__img__dropzone.clearfix 22 #preview 23 -# 1〜5枚目プレビュー表示 24 .item__img__dropzone__input 25 = image.label :image, for: "upload-image" do 26 .input-area 27 = image.file_field :image_url, id: "upload-image", class: "upload-image", 'data-image': 0 28 29 .item__img__dropzone__input__description 30 .item__img__dropzone__input__description__text 31 32 .item__img__dropzone2.clearfix 33 #preview2 34 -# 6〜10枚目プレビュー表示 35 .item__img__dropzone2__input2 36 = image.label :image, for: "upload-image" do 37 .input-area 38 = image.file_field :image_url, id: "upload-image", class: "upload-image", 'data-image': 0 39 .item__img__dropzone2__input2__description 40 .item__img__dropzone2__input2__description__text 41 42 .sell_btn 43 = f.submit "編集する", class: 'sell__about__bottom-btn submit edit_sub' 44 .back_btn 45 戻る 46 47 = render "/items/sheard/icon_footer" 48
解決方法、
または
もっといい方法等あればご教授お願いします。
回答1件
あなたの回答
tips
プレビュー