2016-08-31 4 views
1

Я не могу передать параметры действию контроллера в ajax POST-запрос. Существует мой код:Невозможно передать параметры контроллеру в POST AJAX

$("#sendSubCatButton").click(function(){ 
    var catId = $("#category_name").data("id"); 
    var subCatName = $("#sous_category_name").val(); 
    var lvlUrgenceMax = $("#sous_category_lvl_urgence_max option:selected").val(); 
    // alert(catId); 
    // alert(subCatName); 
    // alert(lvlUrgenceMax); 
    $.ajax({ 
     url: '/sous_categories', 
     type: 'POST', 
     dataType: 'json', 
     data: { 
      name: subCatName, 
      category_id: catId, 
      lvl_urgence_max: lvlUrgenceMax 
     } 
    }); 
    }); 

И мой контроллер (только соответствующие части):

def create 
    @create_new_subcategory = verifRight('create_new_subcategory') 
    if @create_new_subcategory 
     @category = Category.find(params[:category_id]) 
     @sous_category = SousCategory.new(sous_category_params) 
     # Any category have a 'lvl_urgence_max', for those who create an incident. 
     # With that, we can determine how many an incident is important. 
     @sous_category.lvl_urgence_max.nil? ? @sous_category.lvl_urgence_max = 10 : false 
     respond_to do |format| 
     if @sous_category.save 
      format.json { render json: @sous_category.id, status: :created } 
      format.html { redirect_to edit_category_path(@category), notice: 'Vous venez de créer une sous catégorie.' } 
     else 
      format.json { render json: @sous_category.errors, status: :unprocessable_entity } 
      format.html { redirect_to :back, notice: 'Impossible de créer la sous catégorie.' } 
     end 
     end 
    else 
     renderUnauthorized 
    end 
    end 

...

def sous_category_params 
    params.require(:sous_category).permit(:name, :category_id, :lvl_urgence_max) 
    end 

В консоли есть что:

Начато POST "/ sous_categories" для 127.0.0.1 в 2016-08-31 16:08:56 +0200
Обработка SousCategoriesController # создать в HTML
Параметры: { "utf8" => "✓", "authenticity_token" => "EDqyXaq + 2PekfJrLrmn/+ 16AnirzvySD + hkZj5 + cQee2JD2ddMudDRJWXlZkCfKJ3mzw2AWuVAeCPr/y0Y1WVw ==", " sous_category "=> {" имя "=>" efsefesf», "lvl_urgence_max"=> "10"}}

EDIT: Я прокомментировал "оповещения", но я могу видеть значение переменной "CatID" в всплывающем окне предупреждения, но оно не передается.

+0

попробовать это, удалить тип данных: JSON с AJAX кода – Navin

+0

Нету ... '{ "utf8"=> "✓", "authenticity_token"=> "bQo4y190JEC // p1gf7RBdE0LOS1BvBQ9KnzntZ5lLO7LFLcLgQFhugnUWf211EwGzedX37etZLlSW0HI0HQ7Xg ==", «sous_category "=> {" name "=>" efsefesfesf ", " lvl_urgence_max "=>" 10 "}}', и я также попытался использовать тип данных: скрипт и nope тоже ... – mjerem34

ответ

1
var data = {"data": { 
      "name": subCatName, 
      "category_id": catId, 
      "lvl_urgence_max": lvlUrgenceMax 
      }}; 

     $.ajax({ 
       type: 'POST', 
       url: 'http://localhost:3000/sous_categories', 
       data: JSON.stringify(data), 
       contentType: 'application/json', 
       dataType: 'json' 
      }); 
+0

Aaaaaand ... Nope ....: 'var data = {" data ": { " name ": subCatName, " category_id ": catId, " lvl_urgence_max ": lvlUrgenceMax }}; // alert (catId); // alert (subCatName); // alert (lvlUrgenceMax); $ .ajax ({ URL: '/', sous_categories типа: 'POST', CONTENTTYPE: 'Применение/JSON', Datatype: 'JSON', данные: JSON.stringify (данные) }); }); ' – mjerem34

+0

какая ошибка вы получаете? –

+0

У меня есть 'ActiveRecord :: RecordNotFound (не удалось найти категорию с 'id' =): приложение/контроллеры/sous_categories_controller.rb: 72: in 'create'' ' – mjerem34

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