2017-06-14 84 views
0

我在爲我的用戶個人資料頁面實施具有carrierwave的頭像時遇到問題。我得到錯誤nil is not a valid asset source。我認爲這是因爲我不允許:avatar params。我不知道如何去允許在Page_controller.rb文件的我的個人資料頁面中使用頭像參數。配置文件頁面get 'user/:id' => 'pages#profile'的路由。該路由是通過用戶名查找用戶的獲取請求。Carrierwave頭像上傳參數


Pages_controller.rb

class PagesController < ApplicationController 

    def home 

    end 

    def profile 
     #find the user by username id 
     if(User.find_by_username(params[:id])) 
      #assign the username to the id params 
      @username = params[:id] 
     else 
      redirect_to root_path, :notice => "User Not Found" 
     end 
     #help me get the user post to only post on his page 
     @audios = Audio.all.where("user_id = ?", User.find_by_username(params[:id]).id) 

    end 

    #this is to upload the audio file 
    def upload 
     @newaudio = Audio.new 

    end 


end 

User.rb

class User < ApplicationRecord 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    extend Devise::Models 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 
     has_many :audios 
     has_many :reviews 

      mount_uploader :avatar, AvatarUploader 
      # User Avatar Validation 
      validates_integrity_of :avatar 
      validates_processing_of :avatar 
end 

Profile.html.erb

<div class="row"> 
    <div class="container"> 
    <div class="col-xs-3"> 
    <div class="panel panel-default"> 
    <div class="panel-body"> 

     <%= image_tag current_user.avatar.url%> 
    </div>  
    </div>  

    <div class="panel panel-default"> 
     <div class="panel-body"> 
      About 
     </div> 
    </div> 
    </div> 

<div class="col-xs-6"> 
    <% for @a in @audios %> 
    <h1><%= link_to @a.title, audio_path(@a) %> </h1> 
    <audio controls src="<%= @a.audio.url %>"></audio> 
    <hr> 
    <% end %> 
    </div> 

    <div class="col-xs-3"> 
     <div class="panel panel-default"> 
      <div class="panel-body"> 
       About section 
      </div> 
     </div> 
     </div> 
    </div> 

    </div> 
</div> 

Route.rb

Rails.application.routes.draw do 

    devise_for :users 
    root 'pages#home' 

    resources :audios do 
     resources :reviews 
    end 


    get 'user/:id' => 'pages#profile' 
    get '/upload' => 'pages#upload' 
    # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 
end 

ApplicationController.rb

class ApplicationController < ActionController::Base 
    protect_from_forgery with: :exception 
    before_action :configure_permitted_parameters, if: :devise_controller? 


    # protect the database, while allowing these fields to be updated. 
    protected 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.permit(:sign_up) { |u| u.permit(:username, :email, :password, :password_confirmation, :remember_me) } 
    devise_parameter_sanitizer.permit(:sign_in) { |u| u.permit(:login, :username, :email, :password, :remember_me) } 
    devise_parameter_sanitizer.permit(:account_update) { |u| u.permit(:username, :email, :password, :password_confirmation, :current_password, :avatar, :avatar_cache) } 
    end 

end 
+0

你是什麼人在日誌中看到PARAMS? –

+0

'ActionView :: Template :: Error(nil不是有效的資產源): 4:

5:
6: 7: <%= image_tag current_user.avatar.url%> 8:
9:
' – jmike

回答

2

ActionView::Template::Error (nil is not a valid asset source): 4: <div class="panel panel-default"> 5: <div class="panel-body"> 6: 7: <%= image_tag current_user.avatar.url%> 8: </div> 9: </div>

<%= image_tag current_user.avatar%> 

不要把網址中的圖片標籤

+0

謝謝你的工作! @veluDhanesh – jmike