Пусть у меня есть простая форма, как показано нижеКак подать заявку с помощью 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
не в таблице категории. Так что у меня есть белый список в контроллере? Если да, то как я могу делать что?
dont вам нужно отправить данные 'data: $ (" # new_category "). serialize()'? – joyBlanks
yes Мне нужно отправить все данные формы, но замените содержимое поля имени на фиксированную строку и добавьте еще две новые данные. –
Существует опция jquery $ .ajax 'beforesend', вы можете сделать свою модификацию данных там – joyBlanks