2014-12-31 2 views
0

내가 양식을 만들 : 나는 이미지를 선택하면레일즈 AJAX가 페이지를 새로 고침합니다. 왜?

<%= form_for @cover, :remote => true, :html => { :multipart => true } do |file| %> 
    <%= file.file_field(:image, :class => 'choose_image', :onchange => 'this.form.submit()') %> 
    <input name="authenticity_token" type="hidden" value="<%=form_authenticity_token %>"/> 
<% end %> 

그래서, 그것은 확인, 업로드,하지만 페이지를 다시로드 내 모든 데이터를 삭제 한 후. 어떻게 수리 할 수 ​​있습니까?

UPDATE

내 coversController : 당신이 JQuery와 아약스를 통해 직접 이미지/파일을 업로드 할 수있는 브라우저 보안 측면으로

def create 
    @cover = Cover.create(cover_params) 

    if @cover.save 
     redirect_to :back 
    end 
end 
+0

이미지를 업로드하는 데 사용하고있는 보석은 무엇입니까? 또한 remotipart 같은 보석을 사용하고 있습니까? –

+0

@Dipak CarrierWave 보석. 나는 두 번째 질문 =/ –

답변

0

. Iframe을 만들거나 플래시 (SWF)로 할 수 있습니다.

귀하의 경우 :remote => true은 아무것도하지 않고 단순히 ajax 제출 대신 양식을 제출하십시오.

원하는 동작을 수행하려면 remotipart 보석을 추가해야합니다. 이 보석에서도 :remote => true을 추가해야하며 양식은 아약스 방식으로 제출됩니다.

+0

에 대해 몰라. 미안하지만. 같은 결과. 페이지를 다시로드합니다. 내 질문에 내 컨트롤러 작성 방법을 추가합니다. 도움이 될 수도 있습니다 –

+0

예 작성 작업에 문제가 있습니다. 'if @ cover.save redirect_to : back end' redirect_to 페이지를 새로 고침하면이 블록이 제거됩니다. 뷰에'create.js.erb'를 추가하십시오. 이보기에서는'alert ('hi')'라고 쓰고 경고를 받으면 모든 것이 잘 동작한다. 또한 gemfile에 remotipart gem을 포함 시키십시오. –

+0

안녕하세요! 그것은 작동합니다! 하지만 (!) 제출 버튼을 클릭해야합니다. 선택 후 업로드하는 방법은 무엇입니까? onchange = 'this.form.submit()'이라고 쓰면 페이지가 다시로드됩니다. 너는 무엇을 조언하니? –

관련 문제