首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从远程位置上传文件并移除在载波中不起作用

问从远程位置上传文件并移除在载波中不起作用
EN

Stack Overflow用户
提问于 2011-06-15 23:22:55
回答 2查看 1.7K关注 0票数 2

我有一个用于用户模型的嵌套的重新源图片。如果我试图用"remote_file_url“上传图片,它会将图片上传到载波tmp目录中,但没有将它们移动到实际的dir中。这个“应该”是一个验证问题。但事实并非如此。它在控制台中确实工作得很好:

代码语言:javascript
复制
p = Picture.find(360)
p.remote_file_url = "http://example.com/somepic.jpg"
p.save!

请求用图片更新用户的参数:

代码语言:javascript
复制
 "user"=>{"pictures_attributes"=>{"0"=>{"remote_file_url"=>"http://example.com/somepic.jpg", "id"=>"359"}

如果我上传时没有remote_file_url (只是输入文件字段),它可以工作:

代码语言:javascript
复制
 "user"=>{"pictures_attributes"=>{"0"=> { "file"=>#<ActionDispatch::Http>, "remote_file_url"=>"",  "id"=>"359"}

当我使用"remove_file“特性时,也会出现同样的问题。在控制台中工作正常,但不适用于视图/控制器更新。

===================

更新

主计长:

代码语言:javascript
复制
  def update
    @user = current_user
    if @user.update_attributes!(params[:user])
      respond_to do |format|
        format.js { render :json => @user.to_json(:methods => [:pictures]) }
        format.html {redirect_to :back, :notice  => "Successfully updated user."}
      end
    else
      render :action => 'edit'
    end
  end

图片模型:

代码语言:javascript
复制
class Picture < ActiveRecord::Base
  attr_accessible :file, :file_cache, :remove_file, :position, :remote_file_url
  mount_uploader :file, PictureUploader
  belongs_to :user
end

用户模型

代码语言:javascript
复制
# encoding: UTF-8
class User < ActiveRecord::Base
  attr_accessible :remote_file_url, :beta_token, :wants_gender, :gender, :radius, :email, :password, :password_confirmation, :remember_me, :region, :latitude, :longitude, :gmaps, :pictures_attributes
  has_many :pictures, :dependent => :destroy
  accepts_nested_attributes_for :pictures, :allow_destroy => true
end

很基本的东西..。我删除了用户模型的设计定义.

代码语言:javascript
复制
= simple_form_for @user, :url => profile_path(@user) do |f|
  %ul.profiles.users
    - @user.pictures.each_with_index do |picture, i|
      %li.user
      .fields
        = f.simple_fields_for :pictures, picture do |picture_from|
          - if picture.file.present?
            = picture_from.input :_destroy, :as => :boolean
          = picture_from.input :position
          = picture_from.input :file
          = picture_from.input :remote_file_url, :as => :hidden
          = picture_from.input :file_cache
EN

回答 2

Stack Overflow用户

发布于 2012-10-01 00:24:00

这是因为attr_accessible。如果您使挂载上传器的实例变量名为attr_accessible,则Ruby将为您创建访问器.这会干扰到载波的设定器。

不要使任何挂载上传变量名attr_accessible。

票数 1
EN

Stack Overflow用户

发布于 2012-02-22 09:03:32

我也遇到了一个类似的问题,当我设置remote_image_url时,映像没有与模型本身一起保存。

问题是,在设置remote_image_url之后,图片没有保存。

这是因为我从用户模型中调用了一个委托方法self.taker = 'Andrew',它会自动将picture.taker中的'Andrew‘保存到数据库中。我必须避免这种情况,并使用'self.picture.taker = 'Andrew‘来避免图片被持久化。然后,当我调用user.save时,它将保存相关的图片并正确创建缩略图。

这种情况是特定的,但重点是检查您的图片对象是否在设置remote_image_url之后实际保存。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6365594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档