使用Rails UJS在输入字段上输入时提交表单

时间:2016-06-07 21:05:12

标签: ruby-on-rails ajax

我试图尽可能地使用Rails UJS和jQuery,因为它内置于Rails中。它适用于大多数情况;但是,我遇到过一种情况,我不确定它是如何工作的。当用户选中输入字段或按输入字段时,我想将序列化表单提交给服务器,就像这个函数一样:

tag: function(){
        var that = this;
        $view.on('keypress','form#add-tag input#tag_name', function(e){
            var $form = $(this).closest('form');
            var key = e.which;

            if(key == 13){

                $.ajax({
                    type: "POST",
                    data: $form.serialize(),
                    dataType: 'script',
                    url: $form.attr('action'),
                    // contentType: 'application/javascript',
                    beforeSend: function() {
                        $('.loading').show();
                    },
                    complete: function(){
                        $('.loading').hide();
                    },
                    success: function(resp){
                        // this functionality is handled in the :js script response
                    }
                });


                return false;
            }
        })
    }

我知道Rails UJS允许我们在输入这样的输入字段时发送ajax请求:

<%= f.text_field :name, data: { remote: true, url: contact_path(@contact), method: :post } %> 

正如here所述,我们添加了一些数据属性:remote:true,我们想要请求的URL和http方法。

但是这只会发送特定输入字段的name属性及其值,而不是表单输入字段的其余部分。如果我想将所有表单输入字段发送到服务器,如何在没有表单按钮的情况下执行该操作(我只想从指定的输入字段中选项卡),该怎么办。

我的表单看起来像这样:

<%= form_for Tag.new, html: { class: 'add-tag' } do |f| %>
    <%= f.fields_for :taggings, f.object.taggings.build do |taggings_builder| %>
       <%= taggings_builder.hidden_field :taggable_id, value: @contact.id %>
       <%= taggings_builder.hidden_field :taggable_type, value: @contact.class.name %>
   <% end %>
   <%= f.text_field :name, class: 'form-control tags-typeahead', placeholder: 'Add tag and press tab' %>
<% end %>     

0 个答案:

没有答案