2012-01-31 21 views
1

私はフォームが送信ボタンを持っていないイメージをアップロードしてjQueryとRailsでリフレッシュせずに表示する方法は?

<form ...>  
    <input type="file" id="upload"></input> 
</form> 

のようなもの、私はそれを置き換えるためにDIVを作る画像の使用をアップロードする:

<div id="submit"></div> 

私はdiv要素をクリックしたときにことを願っていますの画像はアップロードされ、次に更新されずに別の画像に表示されます。

私はajaxを使用する必要があると知っていますが、jQueryとRailsでどのように実現するのか分かりません。続き

は私の質問です:

  1. 私は$ .postを使用しようとしましたが、$( "#アップロード")方法

    をコントローラにアップロードされたファイルを投稿するのval()だけを返します。ファイルパス、コンテンツなし。

  2. これは私の目標を達成するための私の考えです、それは働くことができますか?

    (1)、をクリックします。( "#が提出")$に関数をバインドするコントローラにファイルを投稿

    (2)コントローラは、/パブリックフォルダ内のファイルを保存するファイルのURLをレンダリング

    (3)私の考えはどんな問題がある場合は、URL

    にいくつかのSRCを設定したの$ .postのコールバックとして関数を定義し、

    ありがとう...私は正しい方法を教えてください!!

+0

残念ながら、ブラウザの大部分はこれをまだサポートしていないため、隠されたフラッシュオブジェクトとiframeを使用するなどの回避策があります - 最も人気のあるキットの1つはUploadifyです:http://www.uploadify.com/ –

+0

... ..しかし、まだ問題があります。コントローラから返されたjavascriptを必要とするiframeを使用しようとしました。だからレンダリング:js => "..."を使っています。しかし、スクリプトは実行できません...理由はわかりません。 – HanXu

答えて

2

最良の解決策は、問題を解決するのに役立つjQuery pluginを使用することです。

画像がアップロードされると、画像への返信としてJSONが返されます。

次に、画像のjQueryまたは純粋なJavaScriptの「src」属性を使用して更新します。成功アップロード時にデータがJSONは、サーバーからユーザーに返され

$('#id-of-your-image').attr(src, data.url); 

を実行するための

JSON

{ url: "http://example.com/uploads/image-222.jpg" } 

JS。

+0

このプラグインを使用しようとしましたが失敗しました。なぜ間違っているのですか...私はなぜそれがわからないのですか?あなたはそれがRails 3.2で使用できると確信していますか? – HanXu

+0

任意のjsプラグインは、バックアップされたソフトウェア、すべてのプロセスで同じプロセスに使用できます。 –

+0

はい...それは今動作します... – HanXu

関連する問題