2014-12-16 1 views
2

jquery fileupload를 사용하여 Heroku에서 직접 작업을 수행하려고하지만 제목에 오류가 표시됩니다. .Heoku의 튜토리얼에 따라 ActionDispatch :: Http :: UploadedFile을 문자열로 직접 변환 할 수 없습니다.

나는 Heroku의 piece of documentation을 철저히 따랐다 고 생각합니다.

우리가 avatar_url 쓴 발판 생성 할 때부터 저를 혼란

<div class="field"> 
    <%= f.label :avatar_url %><br> 
    <%= f.text_field :avatar_url %> 
</div> 

<div class="field"> 
    <%= f.label :avatar_url %><br> 
    <%= f.file_field :avatar_url %> 
</div> 

에에서 발판에 의해 생성 된보기를 변경 기록 부분 : 문자열을 우리의보기 이제 원 파일. 그리고 컨트롤러의 생성 동작에서 무엇을해야하는지에 대한 언급이 없기 때문에 비계가 생성 한 것을 유지했습니다. 여기에 공식적으로 내 만드는 작업입니다 ... 몇 가지 중요한 정보가 부족 할 수도 있고 내가 너무 제안 암시 적 변화를 이해하는 초보자 너무 많이임을 완전히 가능하다

def create 
    @user = User.new(user_params) 

     respond_to do |format| 
     if @user.save 
     format.html { redirect_to @user, notice: 'User was successfully created.' } 
     format.json { render :show, status: :created, location: @user } 
     else 
     format.html { render :new } 
     format.json { render json: @user.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

어느 쪽이든,이 직접 업로드 자습서를 사용하려면 어떻게해야 할 지에 대해 자세히 알아 주시면 감사하겠습니다.

다시 한번 감사드립니다! 댄

전체 추적 :

activerecord (4.1.8) lib/active_record/connection_adapters/abstract/quoting.rb:81:in `type_cast' 
activerecord (4.1.8) lib/active_record/connection_adapters/sqlite3_adapter.rb:261:in `type_cast' 
activerecord (4.1.8) lib/active_record/connection_adapters/sqlite3_adapter.rb:295:in `block in exec_query' 
activerecord (4.1.8) lib/active_record/connection_adapters/sqlite3_adapter.rb:294:in `map' 
activerecord (4.1.8) lib/active_record/connection_adapters/sqlite3_adapter.rb:294:in `exec_query' 
activerecord (4.1.8) lib/active_record/connection_adapters/abstract/database_statements.rb:68:in `exec_insert' 
activerecord (4.1.8) lib/active_record/connection_adapters/abstract/database_statements.rb:95:in `insert' 
activerecord (4.1.8) lib/active_record/connection_adapters/abstract/query_cache.rb:14:in `insert' 
activerecord (4.1.8) lib/active_record/relation.rb:64:in `insert' 
activerecord (4.1.8) lib/active_record/persistence.rb:503:in `_create_record' 
activerecord (4.1.8) lib/active_record/attribute_methods/dirty.rb:87:in `_create_record' 
activerecord (4.1.8) lib/active_record/callbacks.rb:306:in `block in _create_record' 
activesupport (4.1.8) lib/active_support/callbacks.rb:82:in `run_callbacks' 
activerecord (4.1.8) lib/active_record/callbacks.rb:306:in `_create_record' 
activerecord (4.1.8) lib/active_record/timestamp.rb:57:in `_create_record' 
activerecord (4.1.8) lib/active_record/persistence.rb:483:in `create_or_update' 
activerecord (4.1.8) lib/active_record/callbacks.rb:302:in `block in create_or_update' 
activesupport (4.1.8) lib/active_support/callbacks.rb:82:in `run_callbacks' 
activerecord (4.1.8) lib/active_record/callbacks.rb:302:in `create_or_update' 
activerecord (4.1.8) lib/active_record/persistence.rb:103:in `save' 
activerecord (4.1.8) lib/active_record/validations.rb:51:in `save' 
activerecord (4.1.8) lib/active_record/attribute_methods/dirty.rb:21:in `save' 
activerecord (4.1.8) lib/active_record/transactions.rb:268:in `block (2 levels) in save' 
activerecord (4.1.8) lib/active_record/transactions.rb:329:in `block in with_transaction_returning_status' 
activerecord (4.1.8) lib/active_record/connection_adapters/abstract/database_statements.rb:201:in `block in transaction' 
activerecord (4.1.8) lib/active_record/connection_adapters/abstract/database_statements.rb:209:in `within_new_transaction' 
activerecord (4.1.8) lib/active_record/connection_adapters/abstract/database_statements.rb:201:in `transaction' 
activerecord (4.1.8) lib/active_record/transactions.rb:208:in `transaction' 
activerecord (4.1.8) lib/active_record/transactions.rb:326:in `with_transaction_returning_status' 
activerecord (4.1.8) lib/active_record/transactions.rb:268:in `block in save' 
activerecord (4.1.8) lib/active_record/transactions.rb:283:in `rollback_active_record_state!' 
activerecord (4.1.8) lib/active_record/transactions.rb:267:in `save' 
app/controllers/users_controller.rb:31:in `block in create' 
actionpack (4.1.8) lib/action_controller/metal/mime_responds.rb:433:in `call' 
actionpack (4.1.8) lib/action_controller/metal/mime_responds.rb:433:in `retrieve_collector_from_mimes' 
actionpack (4.1.8) lib/action_controller/metal/mime_responds.rb:256:in `respond_to' 
app/controllers/users_controller.rb:30:in `create' 
actionpack (4.1.8) lib/action_controller/metal/implicit_render.rb:4:in `send_action' 
actionpack (4.1.8) lib/abstract_controller/base.rb:189:in `process_action' 
actionpack (4.1.8) lib/action_controller/metal/rendering.rb:10:in `process_action' 
actionpack (4.1.8) lib/abstract_controller/callbacks.rb:20:in `block in process_action' 
activesupport (4.1.8) lib/active_support/callbacks.rb:113:in `call' 
activesupport (4.1.8) lib/active_support/callbacks.rb:113:in `call' 
activesupport (4.1.8) lib/active_support/callbacks.rb:149:in `block in halting_and_conditional' 
activesupport (4.1.8) lib/active_support/callbacks.rb:229:in `call' 
activesupport (4.1.8) lib/active_support/callbacks.rb:229:in `block in halting' 
activesupport (4.1.8) lib/active_support/callbacks.rb:229:in `call' 
activesupport (4.1.8) lib/active_support/callbacks.rb:229:in `block in halting' 
activesupport (4.1.8) lib/active_support/callbacks.rb:166:in `call' 
activesupport (4.1.8) lib/active_support/callbacks.rb:166:in `block in halting' 
activesupport (4.1.8) lib/active_support/callbacks.rb:166:in `call' 
activesupport (4.1.8) lib/active_support/callbacks.rb:166:in `block in halting' 
activesupport (4.1.8) lib/active_support/callbacks.rb:166:in `call' 
activesupport (4.1.8) lib/active_support/callbacks.rb:166:in `block in halting' 
activesupport (4.1.8) lib/active_support/callbacks.rb:86:in `call' 
activesupport (4.1.8) lib/active_support/callbacks.rb:86:in `run_callbacks' 
actionpack (4.1.8) lib/abstract_controller/callbacks.rb:19:in `process_action' 
actionpack (4.1.8) lib/action_controller/metal/rescue.rb:29:in `process_action' 
actionpack (4.1.8) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action' 
activesupport (4.1.8) lib/active_support/notifications.rb:159:in `block in instrument' 
activesupport (4.1.8) lib/active_support/notifications/instrumenter.rb:20:in `instrument' 
activesupport (4.1.8) lib/active_support/notifications.rb:159:in `instrument' 
actionpack (4.1.8) lib/action_controller/metal/instrumentation.rb:30:in `process_action' 
actionpack (4.1.8) lib/action_controller/metal/params_wrapper.rb:250:in `process_action' 
activerecord (4.1.8) lib/active_record/railties/controller_runtime.rb:18:in `process_action' 
actionpack (4.1.8) lib/abstract_controller/base.rb:136:in `process' 
actionview (4.1.8) lib/action_view/rendering.rb:30:in `process' 
actionpack (4.1.8) lib/action_controller/metal.rb:196:in `dispatch' 
actionpack (4.1.8) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch' 
actionpack (4.1.8) lib/action_controller/metal.rb:232:in `block in action' 
actionpack (4.1.8) lib/action_dispatch/routing/route_set.rb:82:in `call' 
actionpack (4.1.8) lib/action_dispatch/routing/route_set.rb:82:in `dispatch' 
actionpack (4.1.8) lib/action_dispatch/routing/route_set.rb:50:in `call' 
actionpack (4.1.8) lib/action_dispatch/journey/router.rb:73:in `block in call' 
actionpack (4.1.8) lib/action_dispatch/journey/router.rb:59:in `each' 
actionpack (4.1.8) lib/action_dispatch/journey/router.rb:59:in `call' 
actionpack (4.1.8) lib/action_dispatch/routing/route_set.rb:678:in `call' 
rack (1.5.2) lib/rack/etag.rb:23:in `call' 
rack (1.5.2) lib/rack/conditionalget.rb:35:in `call' 
rack (1.5.2) lib/rack/head.rb:11:in `call' 
actionpack (4.1.8) lib/action_dispatch/middleware/params_parser.rb:27:in `call' 
actionpack (4.1.8) lib/action_dispatch/middleware/flash.rb:254:in `call' 
rack (1.5.2) lib/rack/session/abstract/id.rb:225:in `context' 
rack (1.5.2) lib/rack/session/abstract/id.rb:220:in `call' 
actionpack (4.1.8) lib/action_dispatch/middleware/cookies.rb:560:in `call' 
activerecord (4.1.8) lib/active_record/query_cache.rb:36:in `call' 
activerecord (4.1.8) lib/active_record/connection_adapters/abstract/connection_pool.rb:621:in `call' 
activerecord (4.1.8) lib/active_record/migration.rb:380:in `call' 
actionpack (4.1.8) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call' 
activesupport (4.1.8) lib/active_support/callbacks.rb:82:in `run_callbacks' 
actionpack (4.1.8) lib/action_dispatch/middleware/callbacks.rb:27:in `call' 
actionpack (4.1.8) lib/action_dispatch/middleware/reloader.rb:73:in `call' 
actionpack (4.1.8) lib/action_dispatch/middleware/remote_ip.rb:76:in `call' 
actionpack (4.1.8) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call' 
actionpack (4.1.8) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call' 
railties (4.1.8) lib/rails/rack/logger.rb:38:in `call_app' 
railties (4.1.8) lib/rails/rack/logger.rb:20:in `block in call' 
activesupport (4.1.8) lib/active_support/tagged_logging.rb:68:in `block in tagged' 
activesupport (4.1.8) lib/active_support/tagged_logging.rb:26:in `tagged' 
activesupport (4.1.8) lib/active_support/tagged_logging.rb:68:in `tagged' 
railties (4.1.8) lib/rails/rack/logger.rb:20:in `call' 
actionpack (4.1.8) lib/action_dispatch/middleware/request_id.rb:21:in `call' 
rack (1.5.2) lib/rack/methodoverride.rb:21:in `call' 
rack (1.5.2) lib/rack/runtime.rb:17:in `call' 
activesupport (4.1.8) lib/active_support/cache/strategy/local_cache_middleware.rb:26:in `call' 
rack (1.5.2) lib/rack/lock.rb:17:in `call' 
actionpack (4.1.8) lib/action_dispatch/middleware/static.rb:84:in `call' 
rack (1.5.2) lib/rack/sendfile.rb:112:in `call' 
railties (4.1.8) lib/rails/engine.rb:514:in `call' 
railties (4.1.8) lib/rails/application.rb:144:in `call' 
rack (1.5.2) lib/rack/lock.rb:17:in `call' 
rack (1.5.2) lib/rack/content_length.rb:14:in `call' 
rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service' 
/home/dan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:138:in `service' 
/home/dan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/webrick/httpserver.rb:94:in `run' 
/home/dan/.rbenv/versions/2.1.2/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread' 

Request 

Parameters: 

{"utf8"=>"✓", 
"authenticity_token"=>"AKeLTFglP6aT0OFd6/Er6lITrhleJ/OZyj2FUAMcssU=", 
"user"=>{"name"=>"yuiuiu", 
"avatar_url"=>#<ActionDispatch::Http::UploadedFile:0x007ff590ce2b00 @tempfile=#<Tempfile:/tmp/RackMultipart20141215-7051-1s9e6tq>, 
@original_filename="imagetest.jpg", 
@content_type="image/jpeg", 
@headers="Content-Disposition: form-data; name=\"user[avatar_url]\"; filename=\"imagetest.jpg\"\r\nContent-Type: image/jpeg\r\n">}, 
"commit"=>"Create User"} 
+0

혹시 이것을 알아 냈습니까? 동일한 오류가 발생했습니다 –

답변

0

솔직히, 나는 레일로 이미지 업로드를 처리 할 수 ​​Carrierwave 또는 Paperclip를 사용하는 것이 좋습니다 것입니다.

Heroku 튜토리얼은 클라이언트가 파일 업로드를 구현하는 것을 말하며, 애플리케이션 업로드의 핵심 요구 사항은 아닙니다. 내가 언급 한 보석은 서버를 임시 캐시로 사용하므로보기에 file_field을 지정할 수 있으며 AvatarUploader (또는 사용하는 모든 업 로더)를 통해 데이터베이스 관계를 처리합니다.

S3와 통신하려면 해당 보석 중 하나를 사용하여 Fog을 구성해야합니다. Carrierwave를 권하고 싶습니다. 내가 가장 좋아하는 문서이며 레일즈에서 이것을 처리하는 방법을 설명하는 문서입니다.

+0

바비 맷슨 감사합니다! 나는 이미 그 두 가지 보석을 작동시킬 수 있었지만, 나는 아직 학습 곡선을 따라 가고 있기 때문에 그 트랙을 포기하지 않을 것입니다. 그뿐 아니라 서버에 대한 비용이 줄어들 기 때문에이 방법이 더 흥미로운 것으로 보입니다. – WikiRevolution

+0

흥미롭게도 필자는 다른 피드백을 수집했으며, Paperclip 또는 Carrierwave를 chosing하는 것에 관해서도 똑같이 말합니다. 그러나 내가 아는 한, 파일이 두 번 업로드되어 가장 효율적인 결과는 아닌 것 같습니다. 왜 이런 단점에도 불구하고 사람들은 Javascript에서 직접 처리되는 업로드를 통해 이러한 보석을 사용하는 것이 좋습니다. – WikiRevolution

+0

파일을 두 번 업로드하는 방법은 무엇입니까? S3를 사용하는 경우 해당 버킷에 한 번만 저장해야합니다. –

관련 문제