JJT*_*ler 14 ruby ruby-on-rails image paperclip ruby-on-rails-4
然后,我想使用Paperclip为每个清单提供照片.我将相应的代码添加到列表show.html.erb,listing.rb模型,listings_controller.rb和_form.html.erb部分.
当我尝试上传列表的图像时,我收到此错误:
Paperclip::Error in ListingsController#update
Listing model missing required attr_accessor for 'avatar_file_name'
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
要尝试的一些事情:即向listing.rb模型添加一些代码,以使:avatar的可接受图像更加健壮.以下是几个stackoverflow帖子中提到的添加到listing.rb模型的内容:
validates_attachment_content_type :avatar, :content_type => %w(image/jpeg image/jpg image/png)
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我附加图像时,我仍然会遇到相同的错误.当我没有附加图像时,我的默认图像被正确加载并正确创建列表.
我的清单模型:
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
Run Code Online (Sandbox Code Playgroud)
我的_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 %>
Run Code Online (Sandbox Code Playgroud)
我的listings_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
Run Code Online (Sandbox Code Playgroud)
还有我的schema.rb文件
ActiveRecord::Schema.define(version: 20140329174335) do
create_table "listings", force: true do |t|
t.string "name"
t.string "company"
t.string "email"
t.string "phone"
t.datetime "created_at"
t.datetime "updated_at"
end
end
Run Code Online (Sandbox Code Playgroud)
编辑:运行$ rails后添加控制台输出生成回形针列表头像
(我需要10个声望点才能发布,所以你必须找到链接http://i.imgur.com/c8KGTa3.png)
Kir*_*rat 25
我想你忘了avatar在listings表格中创建相应的字段.
我建议你生成一个迁移添加avatar到listings表中,如下所示:
rails generate paperclip listing avatar
Run Code Online (Sandbox Code Playgroud)
然后跑 rake db:migrate
根据你的评论和编辑,你有一个迁移文件要添加avatar到listings你通过运行创建的表,rails generate paperclip user avatar但遗憾的是由于某种原因它没有通过,即根据你的表没有avatar specific fields("avatar_file_name", "avatar_content_type", "avatar_file_size" and "avatar_updated_at")在listings表中db/schema.rb.这是一种非常奇怪的行为.
我建议您按顺序执行以下步骤:
销毁现有迁移(如果有):
rails destroy paperclip listing avatar
Run Code Online (Sandbox Code Playgroud)
生成新迁移:
rails generate paperclip listing avatar
Run Code Online (Sandbox Code Playgroud)
跑
rake db:migrate
Run Code Online (Sandbox Code Playgroud)
我希望你没有拒绝投票给我(但是有人这样做了),所以我想提醒它注意这是Paperclip的一个持续问题,我确实在我的评论中提出了一个解决方案(3月31日),如下所示:
我希望你在gemfile中尝试使用gem'paperclip',:git =>"git://github.com/thoughtbot/paperclip.git"然后捆绑安装.完成后告诉我
显然你没有注意到你今天投票给我的人.另外,你说No errors as far as I can tell, image here: i.imgur.com/c8KGTa3.png但是如果你看一下输出有一个错误说清楚:
migration_file_name':protected methodmigration_file_name'为PaperclipGenerator调用:0x007fb3c6494c20(NoMethodError)
| 归档时间: |
|
| 查看次数: |
14607 次 |
| 最近记录: |