2012-02-13 1 views
-2

ユーザーのアバターであ​​る画像の更新に問題があります。私はCarrierWaveを使用しており、profileuserという2つのモデルを持っています。CarrierWaveを使用してイメージを更新できないのはなぜですか?

user#showページには、profileのフォームがあります。そのフォームにはfile_fieldがあります。プロフィールはユーザーに属します。

<%= form_for @user.profile do |f| %> 
     <%= f.file_field :avatar %><br/> 
     <%= f.submit "Change Avatar" %><br/> 
     <% end %> 

提出後、画像は更新されません。私が見サーバーのログでは:私が間違っているのは何

def update 
    @profile = current_user.profile 
    if @profile.update_attributes(params[:profile]) 
    redirect_to user_path(current_user) 
    end 
end 

Processing by ProfilesController#update as HTML Parameters: 
{"utf8"=>"✓", 
"authenticity_token"=>"lHbhHK9SLIiTUuBJAAUyz0CSSC1tUhbE0oD2An2QEEY=", 
"profile"=>{"avatar"=>#<ActionDispatch::Http::UploadedFile:0x007fa60ff43b40 
@original_filename="P1010056.JPG", @content_type="image/jpeg", 
@headers="Content-Disposition: form-data; name=\"profile[avatar]\"; 
filename=\"P1010056.JPG\"\r\nContent-Type: image/jpeg\r\n", 
@tempfile=#<File:/var/folders/kq/gjn7ljfx1wx418ptwnbb46vr0000gn/T/RackMultipart20120213-2399-sm0m9c>>}, 
"commit"=>"Change Avatar", "id"=>"1"} 

これは私のプロフィールの更新アクションのですか?

+0

は '値だったものをクラス「アバター」=>#>を'見えますか?また、あなたのモデルでは、アップロードしたファイルを処理するために何かを使用するように指示していますか? –

+0

アップロードされたファイルを処理するために正確に何をすべきか、他のモデルフィールドを変更したい場合、名前やその他のものも変更されません。 – Pavel

+1

"更新されません"とはどういう意味ですか?画像をどこに保存していますか?あなたがそこに行くなら、それを見ますか? –

答えて

4

あなたがtrueに設定フォームでマルチパートの属性を持っていることを確認してください:

<%= form_for @user.profile, :html => {:multipart => true} do |f| %> 
    <%= f.file_field :avatar %><br/> 
    <%= f.submit "Change Avatar" %><br/> 
<% end %> 

は、モデルでアバター属性のattr_accessibleを設定している場合はもチェックしましたか?モデルの質量割り当てが有効になっていない可能性があります。あなたはProfileモデルでこれを持っていることを確認してください:あなたはトリミングのよう

attr_accessible :avatar, :avatar_cache, :remove_avatar

+1

私はマルチパートとattr_accessibleを追加しましたが、それは助けません – Pavel

+0

@Dia 'form_for'に' multipart'を含める必要はありません。単純なフォームと 'form_tag'については、http://guides.rubyonrails.org/form_helpers.htmlのポイント5を見てください。 – ImranNaqvi

関連する問題