Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – Paperclip错误:缺少需要的模型attr_accessor for’avatar_file_name’大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
然后我想使用Paperclip为每个列表添加照片.我添加了相应的代码到列表show.html.erb,lisTing.rb模型,lisTing_controller.rb和_form.html.erb部分.

当我尝试上传图片给列表我得到这个错误:

Paperclip::Error in LisTingsController#update
LisTing model missing required attr_accessor for 'avatar_file_name'

lisTing_controller的第44行:

def update
 respond_to do |format|
  if @lisTing.update(lisTing_params)
    format.html { redirect_to @lisTing,notice: 'LisTing was successfully updated.' }
    format.json { head :no_content }
  else

需要尝试的几件事情:即将一些代码添加到lisTing.rb模型中,以使可接受的图像为:头像更加健壮.这是几个stackoverflow帖子提到添加到lisTing.rb模型:

validates_attachment_content_type :avatar,:content_type => %w(image/jpeg image/jpg image/png)

不幸的是,当我附加图像时,我仍然会收到相同的错误.当我没有附加图像时,我的默认图像加载正常,并且列表正确创建.

我的房源编号:

class LisTing < ActiveRecord::Base
  has_attached_file :avatar,:styles => { :medium => "150x",:thumb => "100x100>" },:default_url => "default.jpg"
  validates_attachment_content_type :avatar,:content_type => %w(image/jpeg image/jpg image/png) 
end

我的_form.html.erb部分:

<%= form_for @lisTing,:html => { :multipart => true } do |f| %>
  <% if @lisTing.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@lisTing.errors.count,"error") %> prohibited this lisTing from being saved:</h2>

      <ul>
      <% @lisTing.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="form-group">
    <%= f.label :name %><br>
    <%= f.text_field :name,class: "form-control" %>
  </div>
  <div class="form-group">
    <%= f.label :company %><br>
    <%= f.text_field :company,class: "form-control" %>
  </div>
  <div class="form-group">
    <%= f.label :email %><br>
    <%= f.text_field :email,class: "form-control" %>
  </div>
  <div class="form-group">
    <%= f.label :phone %><br>
    <%= f.text_field :phone,class: "form-control" %>
  </div>
  <div class="form-group">
    <%= f.label :avatar %><br>
    <%= f.file_field :avatar,class: "form-control" %>
  </div>
  <div class="form-group">
    <%= f.submit class: "btn btn-priMary" %>
  </div>
<% end %>

我的lisTing_controller.rb控制器:

def update
    respond_to do |format|
      if @lisTing.update(lisTing_params)
        format.html { redirect_to @lisTing,notice: 'LisTing was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: 'edit' }
        format.json { render json: @lisTing.errors,status: :unprocessable_entity }
      end
    end
  end
...
def lisTing_params
   params.require(:lisTing).permit(:name,:company,:email,:phone,:avatar)
end

和我的scheR_229_11845@a.rb文件

ActiveRecord::scheR_229_11845@a.define(version: 20140329174335) do

  create_table "lisTings",force: true do |t|
    t.String   "name"
    t.String   "company"
    t.String   "email"
    t.String   "phone"
    t.datetiR_229_11845@e "created_at"
    t.datetiR_229_11845@e "updated_at"
  end

end

编辑:在运行$rails之后添加控制台输出生成纸夹列出头像

(我需要10个信誉点放在后,所以你必须解决链接http://i.imgur.com/c8KGTa3.png)

解决方法

我想你忘了在列表表中创建头像的相应字段.

我建议您生成迁移以将头像添加到列表表中,如下所示:

rails generate paperclip lisTing avatar

然后运行rake db:migrate

updatE

根据您的评论和编辑,您有一个迁移文件添加头像到您创建的列表表,您通过运行rails生成paperclip用户头像,但不幸的是由于某种原因,它不经过ie,没有头像特定的字段(“avatar_file_name”,根据您的db / scheR_229_11845@a.rb,列表表中的“avatar_content_type”,“avatar_file_size”和“avatar_updated_at”).这是一个非常奇怪的行为.

我建议你按照以下步骤按顺序:

破坏现有迁移(如果有):

rails destroy paperclip lisTing avatar

生成新的迁移:

rails generate paperclip lisTing avatar

rake db:migrate

更新2

我希望你没有投票给我(但有人做了),所以我想提醒一下,这是PaperClip的一个持续的问题,我在我的评论(3月31日)中提出了一个解决方案如下:

显然,没有注意到你或某人谁今天投票给我.
另外,你说没有错误,据我所知,图像在这里:i.imgur.com/c8KGTa3.png但是如果你看输出有一个错误说明清楚:

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – Paperclip错误:缺少需要的模型attr_accessor for’avatar_file_name’全部内容,希望文章能够帮你解决ruby-on-rails – Paperclip错误:缺少需要的模型attr_accessor for’avatar_file_name’所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。