2011-01-11 2 views
3

저는 프로그래밍에 익숙하지 않고 클립을 사용하여 사용자 사진에 사용자 사진을 추가하려고합니다. < % = f.file_field : photo %> 행없이 새 레코드 추가 양식에서 레코드를 작성하고 올바르게 리디렉션하고 레코드를 데이터베이스에 저장합니다. 그러나 save에 포함 된 경우 사용자 경로 대신 create.html.erb로 리디렉션하고 새 레코드를 저장하지 않습니다. 또한 오류를 표시하지 않습니다. photo_file_name, photo_content_type 및 : photo_file_size 필드를 사용하여 users 테이블을 업데이트했습니다. 또한 도움이된다면 창을 돌리고 있습니다.Rails/clip에 처음 오신 것을 환영합니다. - Paperclip save save

모델 :

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 %> 

어떤 도움이 많이 감사합니다! 현상 로그에 도시 뭐죠

:

처리 UsersController # 생성 [POST] 파라미터 (2011-01-12 22시 5분 56초에 대한 127.0.0.1) { "사용자"= > { "사진"=> #, "사용자 이름"=> "nghjhg" "암호"=> "ghjghj"}, "커밋"=> " 변경 사항을 저장" "authenticity_token"=> "IlacpnqsC/ij + 41bx8tN4obOWPgirMx810l/WvOHN68 = "} [형식] -format % wx % h "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/stream1102-2292-2yorcw-0.png [0]" 2> NUL [paperclip] 오류는 입니다.

C : /Users/Home/AppData/Local/Temp/stream110112-5292-2yorcw-0.png,536,913 처리 중에 수신 '식별' 명령에 의해이 인식되지 않습니다. 내의 렌더링 템플릿 사용자/생성 완료 157ms (보기 : 4, DB : 0) | 200 OK [HTTP : // 로컬 호스트/사용자]

답변

3

클립 용 문서에 :avatar의 사용은 단지 예이다. 귀하의 경우에는 :photo이어야합니다. 모델 파일과 뷰 파일 모두에서이를 변경해야합니다.

난 단지 당신의 컨트롤러의이 부분을 발견했습니다

편집 :

이해되지 않는다
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

죄송합니다. 내 원래 질문에서 실수였습니다. 사용자 테이블에서 사진을 모두 변경했습니다. 내 모델, 컨트롤러 및보기가 위와 유사합니다. – Dave