2014-12-31 7 views
0

Я создаю форму:Rails 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:

def create 
    @cover = Cover.create(cover_params) 

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

Какая драгоценность вы используете, чтобы загрузить картинку? Также вы используете драгоценный камень, как remotipart или аналогичный? –

+0

@Dipak CarrierWave драгоценнный камень. Я не знаю о втором вопросе =/ –

ответ

0

В аспекте безопасности браузера вы не можете загрузить изображение/файл непосредственно через JQuery AJAX. Вам нужно либо создать iframe, либо вы можете сделать это со вспышкой (SWF).

В вашем случае :remote => true ничего не делая, он просто представляет форму вместо ajax submit.

Для достижения вашего желаемого результата необходимо добавить remotipart драгоценный камень. В этом драгоценном камне также нужно добавить :remote => true, и форма будет отправлена ​​по ajax.

+0

Простите, но ничего. Тот же результат. Он перезагружает страницу. Я добавляю свой метод создания контроллера к моему вопросу. Может быть, это помогает –

+0

Да, есть проблема в твоем действии. 'if @ cover.save redirect_to: back end' redirect_to обновить страницу удалить этот блок. и добавьте 'create.js.erb' в поле зрения. В этом представлении напишите 'alert ('hi')', если вы получите предупреждение, тогда все будет работать нормально. Также включите драгоценный камень remotipart в свой gemfile. –

+0

Эй! Оно работает! НО (!) Я должен нажать кнопку отправки. Как я могу сделать это после загрузки? Когда я пишу onchange = 'this.form.submit(), он перезагружает страницу. Что вы посоветуете? –

Смежные вопросы