加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 未定义的方法`each’for#

发布时间:2020-12-16 21:04:30 所属栏目:百科 来源:网络整理
导读:我尝试使用CarrierWave上传文件,Image模型是多态的.但我得到了标题中的错误,所以这是我的模型: class Image ActiveRecord::Base belongs_to :imageable,polymorphic: true mount_uploader :image,ImageUploader enum image_type: {icon: 1,title: 2,regular
我尝试使用CarrierWave上传文件,Image模型是多态的.但我得到了标题中的错误,所以这是我的模型:
class Image < ActiveRecord::Base
    belongs_to :imageable,polymorphic: true

    mount_uploader :image,ImageUploader

    enum image_type: {icon: 1,title: 2,regular: 3,slider: 4}
end

class Service < ActiveRecord::Base
    has_many :images,as: :imageable,:dependent => :destroy
    accepts_nested_attributes_for :images

end

和_form.html.erb:

<div class="control-group">
   <%= simple_fields_for :images do |image| %>


     <div class="controls">
        <label class="control-label">Hizmet Büyük Resimi</label> 
        <div class="fileupload fileupload-new" data-provides="fileupload">
          <div class="fileupload-new thumbnail" style="width: 200px; height: 150px;"><img src="http://www.placehold.it/200x150/EFEFEF/AAAAAA&amp;text=no+image" alt=""/></div>
          <div class="fileupload-preview fileupload-exists thumbnail" style="max-width: 200px; max-height: 150px; line-height: 20px;"></div>
          <div>
            <span class="btn btn-file"><span class="fileupload-new">Resim Se?</span><span class="fileupload-exists">De?i?tir</span>
              <%= image.input :image,input_html: { type: :file,class: "default"},wrapper: false,label: false %>
              <%= image.input :image_type,:as => "hidden",:input_html => { :value => 2 } %>
            </span>
            <a href="#" class="btn fileupload-exists" data-dismiss="fileupload">Sil</a>
          </div>
        </div>


     </div>
   <% end %>
</div>

和service_controller“创建”操作:

def create
    @service = Service.new(service_params)

    if @service.save
      if params[:images]
        params[:images][:image].each do |i|
          @image = @service.images.create!(:image => i,:imageable_id => @service.id,:image_type => params[i][:image_type])
        end
      end

      flash[:notice] = "Hizmet sayfas? ba?ar?yla olu?turuldu!"
      redirect_to admin_services_path
    else
      flash[:alert] = "Hizmet sayfas? eklenirken bir hata olu?tu. Lütfen tekrar deneyiniz!"
      render "new"
    end
  end

错误信息:

undefined method `each' for #<ActionDispatch::Http::UploadedFile:0xa5741c0>

Rails.root: D:/Projects/TorkGarage/website/torkgarage

Application Trace | Framework Trace | Full Trace
app/controllers/admin/services_controller.rb:19:in `create'
Request

Parameters:

{"utf8"=>"?","authenticity_token"=>"yN62eOMu2gTrNIWgs27XBiA3uxIAGVgTGt4ywTSm3lKn4kEqG2Ka+3IdaqvSpRQrOPVkBBiuWLl1l5jx5fEUWw==","service"=>{"service_name"=>"Rot - Balans","service_description"=>"sdsad asdas&nbsp;","meta_keywords"=>"adas da"},"_wysihtml5_mode"=>"1","images"=>{"image"=>#<ActionDispatch::Http::UploadedFile:0xa5741c0 @tempfile=#<Tempfile:C:/Users/mehmet/AppData/Local/Temp/RackMultipart20150430-6992-8dc0q8.png>,@original_filename="Layer-6.png",@content_type="image/png",@headers="Content-Disposition: form-data; name="images[image]"; filename="Layer-6.png"rnContent-Type: image/pngrn">,"image_type"=>"2"},"button"=>""}

那么,在这种情况下出现了什么问题呢?

解决方法

您正在尝试迭代图像数组,但您的参数只有一个图像,因此修复将被替换:
params[:images][:image].each do |i|
  @image = @service.images.create!(:image => i,:image_type => params[i][:image_type])
end

@image = @service.images.create!(:image => params[:images][:image],:image_type => params[:images][:image_type])

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读