【问题标题】:Rails form with ajax and non-ajax buttons带有 ajax 和非 ajax 按钮的 Rails 表单
【发布时间】:2012-04-16 08:32:32
【问题描述】:

我有一个带有两个按钮的 @object 的 form_。

当第一个按钮呈现“显示动作”时,第二个按钮再次呈现相同的表单。所以我希望后者是 ajax 处理的。

非 ajax 按钮和 ajax 按钮是否可以在同一个表单中使用,还是我必须更改策略?

也许我需要一个带有 'remote: true' 的 form_for,以便两个按钮都是 ajax,但是,我将如何管理第一个按钮以呈现正确的“显示视图”?

或者也许唯一真正的解决方案是拥有两种不同的形式?

谢谢。

【问题讨论】:

    标签: ruby-on-rails ajax ruby-on-rails-3 forms ajax-on-rails


    【解决方案1】:

    您可以尝试挂钩按钮onClick 事件,删除data-remote="true" 属性,提交表单并再次添加data-remote="true"。我不知道这是否真的是最好的方法,但它应该有效。

    function sendWithoutAjax() {
      $('my_form_id').removeAttr("data-remote");
      $('my_form_id').submit();
      $('my_form_id').data( "remote", "true" );
    }
    

    这样的……

    【讨论】:

    • 问题:如果提交按钮实际上是一个带有值(提交消息)的<input>,使用 form.submit() 将不会传递被点击按钮的输入提交消息。
    【解决方案2】:

    我认为最简单的方法是使用jQuery Form 插件。然后你可以创建表单来提交给你的非 ajax 动作,ajax 功能将附加到提交按钮本身:

    $(".ajax_submit_button").click(function() {
      $(this).closest("form").ajaxSubmit({
        // options go here
        ...
      });
      return false;
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      • 2021-06-07
      • 2011-04-15
      • 1970-01-01
      • 2016-01-02
      相关资源
      最近更新 更多