2012-01-31 4 views
1

내가 양식이 제출 버튼이없는이미지를 업로드하고 jQuery 및 Rails로 새로 고치지 않고 이미지를 표시하는 방법은 무엇입니까?

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

같은 이미지를 사용 무언가를 업로드하려면, 나는 그것을 대체 할 DIV합니다 나는 희망

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

을 사업부를 클릭 할 때 의 이미지가 업로드되고 새로 고침없이 다른 이미지로 표시됩니다.

내가 아약스를 사용해야한다는 것을 알고 있지만 jQuery와 Rails로 어떻게 구현하는지 모르겠다. . 내가 $ .post를 사용하려고

컨트롤러에 업로드 된 파일을 게시,하지만 방법

  1. $ ("# 업로드") 발()는 반환 :

    다음

    내 질문입니다 파일 경로, 내용 없음

  2. 여기 내 목표를 달성하기위한 나의 생각은 효과가 있습니까?

    (1)을 클릭합니다. ("# 제출") $에 기능을 결합 컨트롤러에 파일을 게시

    (2) 컨트롤러/공용 폴더에 파일을 저장 파일의 URL을 렌더링

    내 생각은 문제가있는 경우

    (3) URL에 대한 일부의 SRC를 설정하는 $의 .post의 콜백과 같은 함수를 정의는

    감사합니다 ... 나에게 올바른 방법을 알려주세요 !! !!

+0

불행히도 대다수의 브라우저는 아직 이것을 지원하지 않으므로 숨겨진 플래시 객체와 iframe을 사용하는 것이 좋습니다. 가장 인기있는 키트는 Uploadify입니다. http://www.uploadify.com/ –

+0

... ..하지만 여전히 문제가 있습니다. 컨트롤러에서 반환 된 자바 스크립트가 필요한 iframe을 사용하려고했습니다. 그래서 저는 render : js => "..."를 레일에 사용했습니다. 그러나 스크립트를 실행할 수 없습니다 ... 이유를 모르겠다. – HanXu

답변

2

가장 좋은 해결책은 문제를 해결하는 데 도움이되는 jQuery plugin을 사용하는 것입니다.

이미지가 업로드되면 JSON이 이미지의 위치에 대한 응답으로 반환됩니다.

그런 다음 이미지의 jQuery 또는 순수 JavaScript 업데이트 "src"속성을 사용하십시오.

JSON

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

JS는 성공적으로 업로드

데이터가 JSON 서버에서 당신에게 반환
$('#id-of-your-image').attr(src, data.url); 

에 실행합니다.

+0

이 플러그인을 사용하려고했지만 실패했습니다. 항상 잘못된 것이 있습니다 ... 왜 그런지 모르겠지만 ..... 레일즈 3.2에서 사용할 수 있다고 확신합니까? – HanXu

+0

모든 js 플러그인은 모든 백업 소프트웨어에 사용할 수 있습니다. 모두 동일한 프로세스입니다. –

+0

예 ... 이제 작동합니다 ... – HanXu

관련 문제