Rails ajax 不返回 json 格式

Rails ajax not returning json format

我正在尝试使用 ajax 从我的控制器获取信息。

但它没有像我预期的那样返回 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: unexpected character at line 1 column 1 of the JSON data"

这就像没有击中我的 fill_category_select,因为我试图加注 'error' 但它只是显示相同的错误。

谁能给我指路?

------------ 编辑

我发现线路不通

当我添加资源 :tickets 时,除了:[:show]

该请求给我带来了“404 错误”,这不仅仅是覆盖问题,路由根本不起作用。

而且我仍然需要发现我做错了什么。有什么建议吗?

在您的 routes.rb 文件中,请用这个替换现有文件。

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

我认为这会起作用

我通过添加解决了它:

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

路线我的方法fill_category_select