0
我想向用户添加头像,我做了步骤,但是当我更新用户时,我选择了照片但它没有更新我不知道问题是什么 彼此属性更新成功。阿凡达不更新
edit.html.erb
<%= form_for(current_user,:html => { :multipart => true }) do |f| %>
<% if @user.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>
<ul>
<% @user.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :username %><br>
<%= f.text_field :username%>
</div>
<div class="field">
<%= f.label :Fullname %><br>
<%= f.text_field :Fullname%>
</div>
<div class="field">
<%= f.label :company %><br>
<%= f.text_field :company %>
</div>
<div class="field">
<%= f.label :age %><br>
<%= f.number_field :age %>
</div>
<div class="field">
<%= f.label :like_number %><br>
<%= f.number_field :like_number %>
</div>
<div class="field">
<%= f.label :dislike_number %><br>
<%= f.number_field :dislike_number %>
</div>
<div class="field">
<%= f.label :user_points %><br>
<%= f.number_field :user_points %>
</div>
<div class="field">
<%= f.label :avatar %><br>
<%= f.file_field :avatar %>
</div>
<br>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
users_controller
def edit
end
def user_params
params.require(:user).permit(:avatar, :age,:company,:username, :Fullname, :email, :password, :gender, :like_number, :dislike_number, :user_points)
end
def update
respond_to do |format|
if current_user.update(user_params)
format.html { redirect_to @user, notice: 'User was successfully updated.' }
format.json { render :show, status: :ok, location: @user }
else
format.html { render :edit }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
users model
#every user has an image (avatar)
attr_accessor :avatar_file_name
attr_accessor :avatar_content_type
attr_accessor :avatar_file_size
attr_accessor :avatar_updated_at
#has_attached_file :avatar,
has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100#" }, :default_url => "/images/:style/missing.png"
validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/
migration
class Avatar < ActiveRecord::Migration
# save an image (avatar) of type attachment to user table in database
class AddAttachmentAvatarToProfiles < ActiveRecord::Migration
def change
add_attachment :users, :avatar
end
end
end
gemfile
gem 'xpath', '~> 2.0.0'
#to upload a photo use paperclip gem.
#to use this gem you should download ImageMagick.
#to download ImageMagick :
# sudo apt-get update
# sudo apt-get install imagemagick
gem 'paperclip', '~> 3.0'
controller
def show
end
show.html.erb
<!--check if the user has a photo or not -->
<!--if user hasn't a photo , display the defult photo -->
<!--if user has photo , display it -->
<%if current_user.avatar.blank? %>
<%if current_user.gender == 'Female'%>
<img class="language-flag" src="/assets/girl.jpg" titile="Change Photo">
<%else%>
<img class="language-flag" src="/assets/boy.jpg" titile="Change Photo">
<% end %>
<%else%>
<%= image_tag current_user.avatar.url(:large) %>
<%end%>
我编辑了这个问题,并添加了show.html.erb并在控制器中显示 – 2014-11-14 15:34:43
嗯...好的...对我来说看起来不错。 imagemagick安装和工作?上传过程中,文件是否实际存储在您指定的路径(或默认路径)中?当您进入导轨控制台检查头像时会发生什么?所以假设你已经向你的第一个用户上传了一个头像,例如u = User.first.avatar – aspencer8111 2014-11-14 15:52:24
我在方案中找不到头像,或者当我使用rails控制台查找用户头像时,没有attr头像@ aspencer8111 – 2014-11-14 17:19:46