2013-07-12 62 views
1

所以我正在使用載波直接工作,而我正處於需要更新上傳器對象的「key」屬性的位置。下面是對docs相關線路:沒有載波直接的update_attribute方法

上傳到S3後,你需要在控制器動作對應於new_user_url返回鍵更新上傳對象:

@uploader.update_attribute :key, params[:key] 

的問題是,我的@uploader對象沒有update_attribute方法。實際上,當我查看@uploader對象上的所有方法時,我會看到像key()和key =()這樣的方法,但沒有update_attribute方法。

任何想法是怎麼回事?我錯過了一些需要執行的設置步驟,以使update_attribute方法可用嗎?

+0

你分配給「@ uploader」 –

回答

7

我通過調用模型上的update_attribute而不是上傳器來實現它。在下面的截圖中,@ Uploader是CarrierWave :: Uploader :: Base和@video的子類。

def upload 
    @uploader = Video.new.asset 
    @uploader.success_action_redirect = videos_upload_successful_url 
    end 

    def upload_successful 
    @video = Video.new 
    @video.update_attribute :key, params[:key] # different than documentation!! 
    @video.save 
    end 

這似乎與記錄它們的方式有所不同,它記錄了您嘗試使用的方式。

0

我有同樣的問題,但我解決了問題添加新列。 我認爲您需要添加另一列,如avatar_image_url,除了用作mount_uploader :avatar, AvatarUploaderavatar

而且控制器是這樣的:

class ProfilesController < ApplicationController 
    before_action :setup_context 

    def edit 
    @uploader = @profile.avatar 
    @uploader.success_action_status = '201' 
    end 

    def update 
    if @profile.update_attributes(profile_params) 
     redirect_to home_path 
    else 
     render :edit 
    end 
    end 

    private 

    def setup_context 
    @profile = current_user 
    end 

    def profile_params 
    params.require(:user).permit(:name, :avatar_image_url) 
    end 

end 

當你郵寄下列參數,可以節省avatar_image_url

Parameters: {"utf8"=>"✓", "user"=>{"avatar_image_url"=>"https://my-development.s3.amazonaws.com/uploads/220f5378-1e0f-4823-9527-3d1170089a49/foo.gif", "name"=>"Schneems"}} 

您可以像這樣引用圖片。

<%= image_tag @user.avatar_image_url %> 

而且你也可以檢查一下。

Direct to S3 Image Uploads in Rails | Heroku Dev Center

相關問題