在Rails中提交表单而不重新加载页面

时间:2015-10-06 13:31:32

标签: javascript ruby-on-rails ruby page-refresh preventdefault

我在提交表单时遇到阻止网页重新加载的问题。

我的HTML:

<%= form_for @foo, html: {multipart: true}, remote: true do |f| %>
   <%= f.check_box :bar, :id => "bar_id", :onchange => "submit_function(this.form)" %>
<% end %>

我的Javascript:

function submit_function(form){
    form.submit(function (ev) {
        ev.preventDefault();
    });
}

我的控制器:

def update

   // awesome things for update

   respond_to do |format|
     format.html { redirect_to request.referrer }
     format.js {}
   end
end

单击复选框时,会触发JavaScript。 “form.submit”将表单发送到控制器,但在这种情况下,将重新加载整个页面。我想阻止这次重装。

我也试过这个,但是页面也重新加载了。

function submit_function(form){
  form.submit(function () {
    $.ajax({
        type: this.method,
        url: this.action,
        data: $(this).serialize()
    });
    return false;
  });
}

是否需要通过按复选框更改“提交 - 功能”才能更改?

我现在尝试了一些东西。现在邀请页面不再是新的,但模型已更新。

function submit_function(form) {

  $.ajax({
    type: form.method,
    url: form.action,
    data: $(form).serialize()
  });

  return false;
}

现在我有更新部分更改的问题。我怎么能用js做到这一点?

好的,我明白了。请求将以js发送,不再触发页面重新加载。使用javascript我已经编辑了复选框。

1 个答案:

答案 0 :(得分:0)

似乎与这种情况非常相似:AJAX rails check box using javascript .submit()

他们在那里做的是重新定义表单提交,改变行为。

作为基本建议:使用相当不引人注目的JS而不是内联onchange事件