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