Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 当更新包含图像但不包含图像的_formpartial时,我会得到一个错误_Ruby On Rails_Ruby On Rails 3_Carrierwave_Fog - Fatal编程技术网

Ruby on rails 当更新包含图像但不包含图像的_formpartial时,我会得到一个错误

Ruby on rails 当更新包含图像但不包含图像的_formpartial时,我会得到一个错误,ruby-on-rails,ruby-on-rails-3,carrierwave,fog,Ruby On Rails,Ruby On Rails 3,Carrierwave,Fog,我正在使用Carrierwave&Fog将图像str8推送到S3 创作动作效果很好。问题是,每当我去更新记录时,比如说更改name属性,而我对图像字段不做任何操作时,就会出现如下错误: Started PUT "/vendors/7" for 67.230.41.62 at 2012-12-09 07:00:51 +0000 2012-12-09T07:00:51+00:00 app[web.1]: app/controllers/vendors_controller.rb:65:in `u

我正在使用Carrierwave&Fog将图像str8推送到S3

创作动作效果很好。问题是,每当我去更新记录时,比如说更改
name
属性,而我对图像字段不做任何操作时,就会出现如下错误:

Started PUT "/vendors/7" for 67.230.41.62 at 2012-12-09 07:00:51 +0000
2012-12-09T07:00:51+00:00 app[web.1]:   app/controllers/vendors_controller.rb:65:in `update'
2012-12-09T07:00:51+00:00 app[web.1]: NoMethodError (undefined method `thumb_image_changed?' for #<Vendor:0x00000005940750>):
2012-12-09T07:00:51+00:00 app[web.1]: 
2012-12-09T07:00:51+00:00 app[web.1]:   app/controllers/vendors_controller.rb:66:in `block in update'
结束

有问题的行是
update\u属性

这是我的
views/vendors/_-form.html.erb

<%= simple_form_for(@vendor) do |f| %>
  <%= f.error_notification %>

  <div class="form-inputs">
    <div class="span8">
        <%= f.input :name, :label => "Vendor Name", :wrapper_html => { :class => "span6" } %>
    </div>
    <div class="span8">
        <%= f.input :intro_text, :label => "The headline for your storefront", :as => :text, :wrapper_html => { :class => "span6" }, :input_html => { :rows => 1 } %>
    </div>    
    <div class="span8">
        <%= f.input :description, :label => "The description of your store", :as => :text, :wrapper_html => { :class => "span6" }, :input_html => { :rows => 5 } %>
    </div>
    <div class="span8">
        <%= f.input :banner_image, :label => "Upload Banner", :wrapper_html => { :class => "span6" } %>    
    </div>
    <div class="span8">
        <%= f.input :logo_image, :label => "Upload Logo", :wrapper_html => { :class => "span6" } %>    
    </div>
    <div class="span8">
        <%= f.button :submit, :class => "btn", :wrapper_html => { :class => "span6" } %>
    </div>
  </div> <!-- /.form-inputs -->


<% end %>
我该如何解决这个问题

编辑1

供应商
型号:

class Vendor < ActiveRecord::Base
  attr_accessible :name, :description, :banner_image, :logo_image, :intro_text, :thumb_image
    mount_uploader :banner_image, ImageUploader
    mount_uploader :logo_image, ImageUploader
    mount_uploader :thumb_image, ImageUploader

    acts_as_tagger

    has_many :products

    def tags
        self.owned_tags
    end

    def taggings
        self.owned_taggings
    end
end

原来我必须删除我的
供应商
模型上的调用
mount\u uploader:thumb\u image
,因为我在该模型上没有名为
thumb\u image
的列。

我猜错误来自该模型。你能把它寄出去吗?@m_x完成了。看更新的问题。这很奇怪,我必须承认我不知道它来自哪里。我想你应该检查一下carrierwave的源代码-
thumb\u image\u changed?
是一种神奇的方法,通常由创建,我不知道为什么在这种情况下它不会自动创建。愚蠢的问题:你的迁移都是最新的吗?@m_x是的。问题是,在我的所有表中都没有
thumb\u image
列。这是我在上面展示的
image\u uploader.rb
文件中指定的carrierwave设置。我已经更新了问题,将我的
供应商
文件的模式包括在内。也许你需要这个专栏,其他两张图片都有自己的。事实上,我认为这就是问题所在:对于另外两个ActiveRecord自动创建属性访问器(并处理脏状态),对于这一个,您没有访问器,甚至没有虚拟属性访问器。如果我记得清楚的话,carrierwave将自己装载到现有的访问器上。。。
  version :thumb, :from_version => :main_banner do
    process :resize_to_limit => [170, 120]
  end
class Vendor < ActiveRecord::Base
  attr_accessible :name, :description, :banner_image, :logo_image, :intro_text, :thumb_image
    mount_uploader :banner_image, ImageUploader
    mount_uploader :logo_image, ImageUploader
    mount_uploader :thumb_image, ImageUploader

    acts_as_tagger

    has_many :products

    def tags
        self.owned_tags
    end

    def taggings
        self.owned_taggings
    end
end
  create_table "vendors", :force => true do |t|
    t.string   "name"
    t.text     "description",  :limit => 255
    t.datetime "created_at",                  :null => false
    t.datetime "updated_at",                  :null => false
    t.string   "banner_image"
    t.string   "logo_image"
    t.string   "intro_text"
  end