2012-01-05 6 views
0

写真をアップロードし、paperclipを使ってその写真をレールで処理するには、ajaxファイルアップロードスクリプトを使用しています。ペーパークリップでAjaxファイルをアップロードする

スクリプトがスクリプトが「qqfile」変数名を持っている http://valums.com/ajax-upload/

でハードコーディングされ渡されるのparamsは

クリップで
qqfile=filename.jpg 

あるので、アップロードファイル名のために、私のイメージオブジェクトは写真と呼ばれているので、クリップは写真要素を期待しています。私は思っています!!これが私の問題の原因です。私は

1次試してみた

)私のモデルでは、私は

alias_attribute :qqfile, :photo 

で適切なオブジェクト名にPARAM名をエイリアシングしようとしましたが、私はこれを行う際に、クリップにはありませんモデルを実際に保存します。

私はalias_attributeを削除し、私のコントローラこの変更に

 
    def create 
    new_photo = {photo: params[:qqfile]} 

    @temp_photo = TempPhoto.new(new_photo); 
    if @temp_photo.save 
     return render :text => '{success:true}' 
    else 
     return render :text => '{success:false}' 
    end 
    end 

にエイリアスを提供しようとした、モデルは、DBに保存されますが、すべての写真のフィールドはNULLです。

私がここで間違っていることは明らかですか?

答えて

3

最後に、私はこの問題の救済策を得ました。それは一般的な解決策です。まずthe js codeをダウンロードし、jquey.form.jsをassets/javascriptsに保存してください。 application.jsのように含める

//= require jquery.form 

次はあなたの見解です。この

<div id="image_view"> 
    <%=image_tag @model.image_field.url %> 
</div> 

次のように見えるかもしれないが、画像をアップロードするためのフォームです[あなたはこのフォームをレンダリングするためにbootstrap modalを使用することができます。そして、それはその後、フォームがコントローラメソッドは、単に作成または更新方法のような

#image_view is just a div. where the response from ajax function can be loaded. 
ある

<script type="text/javascript"> 
    $(document).ready(function(){ 
    $('#upload_pic').click(function() { 
     $("#edit_form").ajaxForm({ target: "#image_view" }).submit(); 
     return false; 
    }); 
}); 
</script> 

をレンダリングしているファイルにいくつかのJavaScriptを追加

<%=form_for @model, :html => { :multipart => true, :id => "form-id" }, :url => url_for(:controller => 'controller', :action => 'method_name') do | f | %> 
Upload picture : <%= f.file_field image_field %> 
<%= f.submit "Save changes", :id => :upload_pic %> 
<% end %> 

]より美しくなるだろう

希望あなたは、モデルとGemfileがどのように見えるか知っています。私はそれがあなたを助けるかもしれないと思う。任意のクエリについては、同じスレッドにコメントしてください。ありがとうございました。

関連する問題