2011-01-11 10 views
3

私はプログラミングが新しく、私はユーザーの写真にユーザーの写真を追加するためにpaperclipを使用しようとしています。レコードは、<%= f.file_field:photo%>行を除いた新しいレコードの追加フォームから作成し、適切にリダイレクトしてレコードをデータベースに保存することができます。しかし、それを保存するときには、ユーザーのパスの代わりにcreate.html.erbにリダイレクトして、新しいレコードを保存しません。また、エラーは表示されません。私は、ユーザーテーブルをphoto_file_name、photo_content_type、および:photo_file_sizeフィールドで更新しました。また、窓があれば助けてもらうよ。Rails/paperclipの新機能 - ペーパークリップは保存されません。

モデル:

class User < ActiveRecord::Base 
    has_many :venues 
    has_many :reviews 
    has_attached_file :photo, 
    :styles => { 
     :medium => "300x300>", 
     :thumb => "100x100>" } 
end 

コントローラー:

class UsersController < ApplicationController 

    def index 
    @users = User.all 
    end 

    def new 
    @user = User.new 
    end 

    def create 
    @user = User.create(params[:user]) 
    if @user.save 
     flash[:notice] = 'User added' 
     redirect_to users_path 
    else 
     @user.save 
    end 
    end 

    def show 
    @user = User.find(params[:id]) 
    end 
end 

ビュー:

<% form_for (@user, :html => { :multipart => true }) do |f| %> 

    <p>username: <br> 
    <%= f.text_field :username %></p> 

    <p>password: <br> 
    <%= f.text_field :password %></p> 

    <p>photo: <br> 
    <%= f.file_field :photo %></p> 

    <%= submit_tag %> 
<% end %> 

すべてのヘルプははるかに高く評価されます!開発ログに示されているいただきまし

処理がUserController#作成[POST]パラメータ(2011-01-12 22時05分56秒で 127.0.0.1用): { "ユーザー" = > { "写真" =>#、 "ユーザ名" => "nghjhg"、 "パスワード" => "ghjghj"}、 "コミット" => " 変更を保存"、 "authenticity_token" => "IlacpnqsC/IJ + 41bx8tN4obOWPgirMx810l/WvohN68 = "} 【クリップ】%のWX%のH -format識別 "C:/Users/Home/AppData/Local/Temp/stream110112-5292-2yorcw-0.png [0]" 2> NUL [ペーパークリップ

C:/Users/Home/AppData/Local/Temp/stream110112-5292-2yorcw-0.png 'を識別' コマンドによって認識されない>処理をしながら】エラーが が受信しました。 [paperclip] identify -format %wx%h 「C:/Users/Home/AppData/Local/Temp/stream110112-5292-2yorcw-0.png [0]」 2> NUL [paperclip]エラーは でした

C:/Users/Home/AppData/Local/Temp/stream110112-5292-2yorcw-0.png処理中に受信しましたコマンドでが認識されません。 内のレンダリングテンプレート/アプリケーションレンダリング ユーザ/作成157msで完了(表示: 4、DB:0)| 200 OK [のhttp:// localhost /をユーザ]

答えて

3

クリップのためのドキュメントで:avatarの使用は単なる一例です。あなたの場合は:photoでなければなりません。モデルファイルとビューファイルの両方でそれを変更する必要があります。

私はちょうどあなたのコントローラのこの部分を気づいた

EDIT:

意味をなさない
if @user.save 
    flash[:notice] = 'User added' 
    redirect_to users_path 
else 
    @user.save # <<< here 
end 

。最初の保存が失敗した場合(falseを返す)、何も変更せずにもう一度保存しようとしていますか?私はその行がrender :action => :newでなければならないと思う。

EDIT 2つの

あなたのログには、あなたのidentifyコマンドは、.pngファイル認識できないことを示しています。いずれか、またはidentifyコマンドがありません。 ImageMagickをインストールしましたか?もしそうなら、どうですか?

+0

答えをいただきありがとうございます、私は私の質問で間違いを犯したことに気付きました。私は、avater_file_name、avater_content_type、avatar_file_sizeフィールドのUserテーブルを移行しました。写真は残念です。これで、 'photo_file_name'に必要なattr_accessorが見つからないユーザーモデルが返されます。私は「写真」で元に戻って、保存しないように戻ってきました。 – Dave

+0

Erm、テーブル列の名前を 'photo_ *'の代わりに 'avatar_ *'に変更しましたが、has_attached_file:avatarの代わりに 'has_attached_file:photo'を使うように質問を更新しました。決心しろ!どちらですか? – noodl

+0

私の元の質問では間違いでしたが、私はUserテーブルのphoto_にすべて変更しました。私のモデル、コントローラ、およびビューは上記のように見えます。 – Dave

関連する問題