Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails AJAX重新加载页面。为什么?_Ruby On Rails_Ajax - Fatal编程技术网

Ruby on rails Rails AJAX重新加载页面。为什么?

Ruby on rails Rails AJAX重新加载页面。为什么?,ruby-on-rails,ajax,Ruby On 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_t

我创建了一个表单:

<%= 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 %>

作为浏览器安全方面,您不能通过jqueryajax直接上传图像/文件。您要么需要创建Iframe,要么可以使用flashSWF来创建

在您的例子中:remote=>true不做任何事情它只是提交表单而不是ajax提交


你需要添加gem来实现你想要的行为。在这个gem中,您还需要添加:remote=>true,表单将以ajax方式提交。

您使用哪个gem上传图像?您是否也在使用类似宝石的remotipart或类似产品?@Dipak CarrierWave gem。第二个问题我不知道,对不起,什么都不知道。同样的结果。它将重新加载页面。我将控制器创建方法添加到问题中。可能有帮助,因为创建操作中存在问题。如果@cover.save redirect_to:back end redirect_to刷新页面,请删除此块。并在视图中添加create.js.erb。在这个视图中,写下alert'hi',如果你得到alert,那么一切正常。在你的gem文件中也包括remotipart gem。嘿!它起作用了!但是我必须点击提交按钮。我如何在选择后上传它?当我写onchange='this.form.submit'时,它会重新加载页面。你有什么建议?它应该有用。但若刷新表单,那个么你们应该尝试在按钮上触发点击事件,而不是表单提交。分配一个ID以形成Submit并触发单击它。
def create
    @cover = Cover.create(cover_params)

    if @cover.save
        redirect_to :back
    end
end