将 json 从 rails 传递到 coffeescript

Passing json from rails to coffeescript

提问人:Ben 提问时间:6/11/2023 更新时间:6/11/2023 访问量:27

问:

我正在尝试解开我几年前写的一些代码。我以为一切都在工作,但后来我升级到了 Rails 7,并开始在一个页面上遇到一些奇怪的错误。

工作代码:

maps_controller.rb

def grid
    @grids = Grid.select("id, geom, grid_name").where("ispub is true").order("id")
    feature_collection = Grid.to_feature_collection @grids
    @geojson = RGeo::GeoJSON.encode(feature_collection)

    respond_to do |format|
      format.json { render json: @geojson }
      format.html
    end
  end

grid.coffee咖啡

  $.ajax
    dataType: 'text'
    url: 'grid.json'
    success: (data) ->
      L.geoJSON(JSON.parse(data), style: gridStyle, onEachFeature: onEachFeature ).addTo map
    error: ->
      alert "Failed to load AJAX data"

这似乎根据 Chrome 中的开发人员工具传递了一个名为 grid.json 的文件Working screenshot

非工作代码

plants_controller.rb

  def map
    @pId = params[:id]
    if @pId.present?
      @plants = Plant
        .where(id: @pId)
      feature_collection = Plant.to_feature_collection @plants
    else
      @plants = Plant
        .order(:id)
        .eager_load(:genus, :type, :gis, :detail)
        .find_not_dead
        .find_grid
        .where(["types.type_name not LIKE ? and types.type_name not LIKE ? and gis.geom is not null", "A%", "B%"])
    end
    feature_collection = Plant.to_feature_collection @plants
    @geojson = RGeo::GeoJSON.encode(feature_collection)

    respond_to do |format|
      format.json { render json: @geojson }
      format.html
    end
  end

植物咖啡

  $.ajax
    dataType: 'text'
    url: map.json
    send: () ->
      $('#loading').show()
    complete: () ->
      $('#loading').hide()

这似乎在Chrome中为每个开发人员工具创建了一个映射文件(没有.json扩展名)。Non-working screen shot

任何帮助理解为什么第二个不起作用都会很棒。已经有几年了

Ruby-on-Rails AJAX 咖啡脚本

评论

1赞 tgf 6/12/2023
也许尝试将其更改为 .它“感觉”有点像旧的解决方法。dataType: 'text'dataType: 'json'

答: 暂无答案