2

这个问题之前在一些帖子中出现过,但没有一个是具体的,也没有提出解决方案。

我有一个导轨形式。我使用我想让这个按钮通过 ajax 提交表单,也就是 remote:true。

在我看来,rails.js 还不支持提交类型的按钮,它对我不起作用,即使我手动向按钮添加数据远程标签。(虽然它应该与 )

但是我想使用新的 html5 按钮 formaction 属性走这条路,因为这使得将不同的操作分配给不同的按钮变得更加容易。

所以我问我是否只是在这里遗漏了一些东西,或者这只是rails ujs中缺少的东西,但是呢?

我现在只是在挖掘 rails.js,所以也许有人已经想出了一个补丁?使按钮 type=submit remote:true 工作

4

3 回答 3

1

如果我得到你,你想通过 AJAX 提交表单(不是特殊的按钮按下)。为此,您将 a 添加remote: true到您的form-tag,而不是按钮本身。

请参阅http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-form_tag

于 2013-09-19T07:26:22.247 回答
0

我曾经这样做:

  • 向以“js-”开头的提交按钮添加一个类,它用作在一个小 jquery 脚本/插件中检索按钮的钩子。
  • 在js中,我检索按钮并preventDefault();对其进行操作以避免提交
  • 可选地,我可以验证数据或显示某种警报/模式视图等
  • 最后我打电话$.ajax来做异步电话

这里有一个小例子

= f.submit 'myButton', class: 'js-my_async_form'
:javascript
  jQuery(function($) {
    $('.js-my_async_form').asyncSubmit();
 });

在这里你有“小插件”

jQuery(function($) {
  jQuery.fn.asyncSubmit = function(){
    return this.each(function () {
      var mybutton = $(this);
      var completed = function(answer) {
        // do some stuff
      };

      var error = function(answer) {
        //do some stuff
      };

      var submit_click = function(event){
        event.preventDefault();
        $.ajax({
          url: //my_form_path,
          type: //get or post,
          success: completed,
          error: error,
          dataType: 'json'
        });
      }

      mybutton.click(submit_click);
    });
  }
});

这是我的脚本的改编,所以要小心处理!

于 2013-09-19T08:45:56.267 回答
0

我不确定我是否理解您的问题......我必须明确提交一个远程表单(因为 chrome 中的一个错误)对我来说问题是表单是数据远程而不是按钮提交。现在我在按钮的 onclick 中提交,但我必须使用表单本身的提交方法。

让我们更清楚一点......我的表单的数据远程属性为true,我的提交按钮有 :onclick => "stuff_i_had_to_do_before_submiting();$("new_id_of_my_form").submit();"

希望它有帮助...

ps:感谢pduersteler的整理

是的,“onclick”不好,但之前的东西(“stuff_i_had_to_do_before_submiting()”需要一些垃圾,我将javascript拉到一个单独的文件中以供重用......

于 2013-09-19T07:05:50.787 回答