2014-11-14 45 views
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%> 

回答

0

你想讓頭像真正出現在哪裏?我在user#show?如果是這樣,你是否也可以發佈該代碼。我猜你正在保存/上傳好的東西,但只是不從數據庫中攫取東西,實際上將它們發送到視圖。

+0

我編輯了這個問題,並添加了show.html.erb並在控制器中顯示 – 2014-11-14 15:34:43

+0

嗯...好的...對我來說看起來不錯。 imagemagick安裝和工作?上傳過程中,文件是否實際存儲在您指定的路徑(或默認路徑)中?當您進入導軌控制檯檢查頭像時會發生什麼?所以假設你已經向你的第一個用戶上傳了一個頭像,例如u = User.first.avatar – aspencer8111 2014-11-14 15:52:24

+0

我在方案中找不到頭像,或者當我使用rails控制檯查找用戶頭像時,沒有attr頭像@ aspencer8111 – 2014-11-14 17:19:46