2015-12-01 3 views
0

Пусть у меня есть простая форма, как показано нижеКак подать заявку с помощью AJAX и с дополнительными полями

<%= form_for(@category) do |f| %> 
    <% if @category.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@category.errors.count, "error") %> prohibited this category from being saved:</h2> 

     <ul> 
     <% @category.errors.full_messages.each do |message| %> 
     <li><%= message %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.label :name %><br> 
    <%= f.text_field :name %> 
    </div> 
    <div class="field"> 
    <%= f.label :enabled %><br> 
    <%= f.check_box :enabled %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

Я хочу представить эту форму с помощью Ajax запроса. Идентификатор моей формы: new_category. Поэтому я попробовал что-то вроде этого

<script type="text/javascript"> 
    $("#new_category").click(function() { 
    $.ajax({ 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     url: '/categories', 
     dataType: "json", 
     success: function (result) { 
     return false 
     }, 
     error: function() { 
     window.alert("Something went wrong! Please try again"); 
     } 
    }); 
    }); 
</script> 

Это не отправляет мою форму. Я думаю, что чего-то не хватает. Кроме того, перед отправкой формы я хочу заменить содержимое поля имени фиксированной строкой «Это строка примера». И нужно отправить некоторые другие фиксированные данные, такие как "user_id" => current_user.id, "user_name" => current_user.name

Эти два поля user_id и user_name не в таблице категории. Так что у меня есть белый список в контроллере? Если да, то как я могу делать что?

+1

dont вам нужно отправить данные 'data: $ (" # new_category "). serialize()'? – joyBlanks

+0

yes Мне нужно отправить все данные формы, но замените содержимое поля имени на фиксированную строку и добавьте еще две новые данные. –

+0

Существует опция jquery $ .ajax 'beforesend', вы можете сделать свою модификацию данных там – joyBlanks

ответ

0

во-первых, я не нахожу #new_category ID на вашей форме, делает рельсы добавить автоматически т.е. рамки конкретнее? во-вторых, и самое главное, вы не посылаете параметр данных в ваших настройках АЯКС.

Как и предполагалось другими, необходимо отправить данные как часть вашего запроса ajax. Поэтому вы можете добавить данные:

к запросу ajax. Попробуйте:

$("#new_category").serialize() 

Таким образом, ваш запрос будет:

<script type="text/javascript"> $("#new_category").click(function() { 
$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: '/categories', 
    dataType: "json", 
    data: $("#new_category").serialize() 
    success: function (result) { 
    return false 
    }, 
    error: function() { 
    window.alert("Something went wrong! Please try again"); 
    } 
}); 

});

+0

В источник html id, показанный как new_category, и как я могу отправить данные всей формы? –

+0

, как это было предложено другими, необходимо отправить данные как часть вашего запроса ajax. – ArrowHead

+0

Это не отправляет запрос ajax, скорее отправляется html-запрос –

0

Добавить класс или идентификатор в форме и представить кнопку, как: -

<%= form_for(@category), id: "category_form" do |f| %> 
    <%= f.submit "Submit", class: "add_category" %> 
<% end %> 

Если вы использовали разработки и current_user присутствует, то вы можете отправить дополнительные Params со значениями формы, как: -

<script type="text/javascript"> 
    $(document).on('click', '.add_category', function(event) { 
     event.preventDefault(); 
     var user_id = "<%= current_user.id %>" 
     var username = "<%= current_user.username %>" 
     $.ajax({ 
      type: "POST", 
      contentType: "application/json; charset=utf-8", 
      url: '/categories', 
      dataType: "json", 
      data: $("#category_form").serialze + "&user_id="+user_id+"&username="+username 
     }); 
    }); 
</script> 
+0

Это не отправляет запрос ajax, скорее отправляется запрос html, поэтому я не получаю user_id и имя пользователя –

+0

@ user1670773 У меня есть код обновления. Пожалуйста, проверьте. – user3506853

Смежные вопросы