2015-07-13 4 views
0

Я пытаюсь использовать ajax для получения информации от моего контроллера.Rails ajax не возвращает формат json

Но это не возвращает json, как я ожидаю. Возможно, у меня конфликт маршрутизации, но не уверен.

Мой контроллер:

class TicketsController < ApplicationController 
    before_action :authenticate_user! 
    respond_to :js, :json, :html 
    //... 
    def fill_category_select 
    @category_by_system = Category.where(system_id: params[:sent_id]) 
    render json: @category_by_system 
    end 

мой routes.rb:

resources :tickets 

    get 'tickets/fill_category_select/:sent_id', to: 'tickets#fill_category_select' 

мой сценарий на Haml файле:

:javascript 
     $(document).ready(function(){ 
     $('#ticket_system').change(function(){ 
      $.ajax({ 
        url: "fill_category_select", 
       type: "GET", 
      dataType: "json", 
       data: { sent_id: $('#ticket_system').val() }, 
       async: true, 
       success: function(data, textStatus, xhr) { 
         for(var i in data){ 
          var id = data[i].id; 
          var title = data[i].description; 
          $("#ticket_category").append(new Option(title, id)); 
         } 
         }, 
       error: function(XMLHttpRequest, errorTextStatus, error){ 
         alert("Failed: "+ errorTextStatus+" ;"+error); 
        } 
      }); 
      }); 
     }); 

Когда я вызвать событие и сделайте запрос, он это:

REQUEST URL: http://localhost:3000/tickets/fill_category_select?sent_id=44

REQUEST METHOD: GET

STATUS CODE: 200 OK

TYPE: html

И ошибка возвращается и отображается предупреждение Javascript является: «SyntaxError: JSON.parse: неожиданный символ в строке 1 колонки 1 из данных в формате JSON»

Это вроде не hiting мой fill_category_select, потому что я» ve попытался поставить рейз «ошибка», и он просто показывает ту же ошибку.

Может ли кто-нибудь дать мне направление?

---------- EDIT

Я нашел маршрут линия не работает.

, когда я добавляю ресурсы: билеты, за исключением: [: шоу]

Просьба принести мне «ошибка 404», это не просто проблема переопределения, маршрутизация не работает вообще.

И мне еще нужно открыть то, что я делаю неправильно. любое предложение?

+0

Если добавить URL с ** ** в JSON заставить его работать в формате JSON, будет ли он работать? Например: ** fill_category_select.json **. –

+0

Да, даже когда я поставил .json в свой запрос, ответ все еще находится в html. –

ответ

0

Я решил, добавив:.

match 'tickets/fill_category_select/:sent_id' => 'tickets#fill_category_select', via: :get 

для маршрута моего метода fill_category_select

0

в вашем файле routes.rb, замените существующий на этот.

get 'tickets/fill_category_select/:sent_id' => 'tickets#fill_category_select', defaults: { format: 'json' } 

Это будет работать я думаю

+0

по-прежнему приносят ответ Tickets # show html и не ударяют мой метод: [ –

+1

в скрипте, где вы написали url: «fill_category_select», измените это на url: «/ tickets/fill_category_select» – Athar

+1

Я думаю, что раньше это было собирается показать действие в контроллере билетов. но давайте посмотрим, имеют ли смысл мои комментарии. – Athar

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